ページ 11

Cで書いた実行ファイルをレンタルサーバで動かしたい

Posted: 2017年4月14日(金) 17:34
by かちゃにんまる
突然で大変恐縮なのですが、ソケット通信を行うにあたり
CGI通信としてPerlやPHPなどやら目にしますが、よくわかりません。

そうではなくてCがクライアントとサーバを繋ぐ方法はありませんか?
CGIを使うという方法しかないのでしょうか。

ソケットのやり方でローカルネットワークにおいての通信の実装はできます。
グローバルネットワークでの作り方がわかりません。

リアルタイム通信のできるオンラインゲームを考えています。

もしあるのであれば、実装まで教えていただけたらありがたいです。

PS
サーバでコンパイルを行えるという方法が気になっていますが、
それでないとできないのでしょうか。

また、通信仕様上セーブデータの管理とするとデータベース(?)の扱いも
Cではできないとなってくるのでしょうか。

どうかご教授お願いいたします。

Re: Cで書いた実行ファイルをレンタルサーバで動かしたい

Posted: 2017年4月14日(金) 20:02
by Dixq (管理人)
まず、レンタルサーバーではexeの実行を禁じている所があります。
うちのサーバーはさくらのVPSですが、この環境だと実行可能です。
CでLAN内で実装出来ているのであればサーバーと通信するのはそこまで大変ではないです。

まずさくらのVPSでも借りてきます。
ほとんどのサーバーはLinuxなのでLinux環境で動くコードがあることが前提です。
コンパイルはVisualStudio等でWindowsEXE用にコンパイルしたものをアップロードしても動きません。
Linux環境で動作するソースコードをアップロードしてサーバー上でg++等を使ってコンパイルします。
特定のポートを解放します。ポート11111を解放したとしましょう。
ソースコードには11111を解放して待ち受けるようにしておきます。
VPSサーバーのIPアドレスが契約時に教えられるので、クライアントからはそのIPアドレスとポート11111にめがけてsendします。
socketが繋がれば後はお好きなように。

リアルタイムオンラインゲームを作るのであれば通信がどれ位の時間で出来るのかを考慮してくださいね。
こちらに実際に本ホームページ訪問者に協力してもらって調べたデータがあるのでよければ参考にしてください。
無線環境等であれば下手するとpingが返ってくるまで1秒位かかりますから格ゲーのようなリアルタイム性が必要な物には注意が必要です。
物理的な距離が長くなれば長くなるほどpingの時間はかかります。
北海道から沖縄を往復するにはそれなりの時間がかかります。
なのでゲームセンターの全国対戦は実は中身全国ではなく近い地域とマッチングされるようになっていたりします。

Re: Cで書いた実行ファイルをレンタルサーバで動かしたい

Posted: 2017年4月14日(金) 20:03
by 白い変人
質問者様がぶち当たっている壁がどの様な物なのかを完全には把握出来ておりませんが、CGI・・・の話はこのケースでは若干論点が違うのではないかと、私は感じました。

Javaは使えた方がサーバ側のプログラムを仕上げるのに役立つかもしれません。


質問者様の勉強の進捗状況は分かりかねますが、この理屈を完全に理解しようと思うと、それなりに労力を要するものだと考えた方が良いと私は思います。

故に、恐らく、この掲示板で1回質問しても、解決するには至らないのかもしれません。

それ位、いきなりやるには必要な知識が多い、難易度が高いものだという覚悟は必要かと思います。


>ソケットのやり方でローカルネットワークにおいての通信の実装はできます。

winsockの理屈は十分に理解出来ているという事でしょうか?

それと、サーバ側のセキュリティ対策の知識もあると考えて宜しいでしょうか?

不安なら、これに関しても、十分な勉強が必要かもしれません。

因みに、セキュリティ対策に関しては、素人がセキュリティの本に書いてある通りに対策しただけでは不十分だったりする場合もあるので、注意が必要です。

ポートを開ける事になるだろう訳ですから。

常に最新のセキュリティの動向を追い続けなければならないという事に精神を疲弊したくないのなら、セキュリティ対策に関しては、お金の力で解決する事も必要になるかもしれません。


>サーバでコンパイル

態々サーバでコンパイルする必要は無いでしょう。


>また、通信仕様上セーブデータの管理とするとデータベース(?)の扱いもCではできないと[ダメに?]なってくるのでしょうか。

Cでする事も出来るし、別なプログラムにDBを扱う指示を出す様にする事も出来るし・・・という曖昧な回答になりそうですね。

ただ、そのデータベースにRDBを使用するなら、当り前かもしれませんがSQLの知識も必要になると考えたほうが良いでしょう。


と言う訳で、

まぁ、ここでダラダラと回答していても質問者様はイメージが掴めないのかもしれません。

そこで、実は質問者様がやりたそうな事を一通り書かれている書籍がありまして、それが「14歳から始める C言語 オンラインゲーム プログラミング教室」という書籍ですね。

この書籍の購入者向けに、無償で使えるゲームサーバも提供しているので、今の質問者様には推奨できる書籍かもしれません。

ただ、今の時代に於いては、本の通りでは上手く行かない箇所もあるので、そこは読みながら汲み取って理解する必要はあるかと思います。

Re: Cで書いた実行ファイルをレンタルサーバで動かしたい

Posted: 2017年4月14日(金) 20:13
by 白い変人
追記

失敬。

セキュリティの件で過剰に不安を煽った感が有りましたが、タイトルに「レンタルサーバ」と書かれていますね。

それなら、セキュリティの向上もある程度見込めるかもしれません。

Re: Cで書いた実行ファイルをレンタルサーバで動かしたい

Posted: 2017年4月15日(土) 16:02
by かちゃにんまる
Dixqさま
Linux環境で動作するソースコードをアップロードしてサーバー上でg++等を使ってコンパイルします。

のところ
コンパイルまで辿りつけずとなりました。サーバにどうやってアクセスし、コンパイルするのかがわからないです。

白い恋人さま
書籍も検討してみようと思いました。

みなさんありがとうございます。

Re: Cで書いた実行ファイルをレンタルサーバで動かしたい

Posted: 2017年4月15日(土) 17:18
by みけCAT
かちゃにんまる さんが書きました:サーバにどうやってアクセスし、コンパイルするのかがわからないです。
一般には、SSHでアクセスし(サーバの提供者のドキュメントに必要なパラメータや詳しいやり方があるかもしれません)、

コード:

gcc hoge.c -O2 -o hoge
のようなコマンドでコンパイルします。

Re: Cで書いた実行ファイルをレンタルサーバで動かしたい

Posted: 2017年4月17日(月) 16:35
by かちゃにんまる
みけCATさま
SSHこの機会に挑戦してみようと思いました。

みなさんどうもありがとうございました。