簡単な通信対戦

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

簡単な通信対戦

#1

投稿記事 by みけCAT » 13年前

自分でプレイをしながら他の人の状況を表示するだけの(互いに影響を及ぼさない)
簡単な通信対戦のサンプルを作ってみました。
一応うまく動いたのですが、もっとここをこうすればいいなどのアドバイスがもしありましたら
教えていただければありがたいです。
ただし、「ソースを分割した方がいい」というのは無しでお願いします。
[hr]
この状態ではサーバーを含めて4人までつなげますが、MAX_PEOPLEの定義をいじることにより変更できます。
UDPを使っているので、テストのときはUDPのポートの開放をお願いします。
[hr]
現在、クライアントがつながっている状態でサーバーを閉じると、クライアントがフリーズしてしまいます。
これはどのようにするのがいいでしょうか?
添付ファイル
netvstest.zip
プログラムです。
(24.19 KiB) ダウンロード数: 132 回
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: 簡単な通信対戦

#2

投稿記事 by みけCAT » 13年前

少し改良しました。
  • 名前一覧の実装
  • クライアントの強制ログアウトの実装(クライアントが強制終了したとき用)
添付ファイル
netvstest_2.zip
プログラムです。
(24.63 KiB) ダウンロード数: 111 回
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: 簡単な通信対戦

#3

投稿記事 by みけCAT » 13年前

さらに改良しました。
  • 時間で強制ログアウトさせるようにした(10秒アクセスがない場合)
  • 受信したデータの送信元(IPアドレス)をチェックするようにした
  • でたらめのIPアドレスを入力しても(接続できない時)フリーズしないようにした
  • サーバーを先に落としてもフリーズしないようにした
何か返信をくれるとありがたいなあ...
添付ファイル
netvstest_3.zip
プログラムです。
(25.13 KiB) ダウンロード数: 103 回
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: 簡単な通信対戦

#4

投稿記事 by みけCAT » 13年前

さらに改良版です。
  • サーバーから一定時間(10秒)応答がない場合に終了するようにした
  • IPアドレスでチェックしてはじくようにした
  • サーバーをドメインで入力できるようにした
  • ダイアログの項目の入力チェックを追加
「何かアドバイスがありましたら返信してください」では答えにくいですか?
何でもいいのでとりあえず返信をいただけるとありがたいです。
添付ファイル
netvstest_4.zip
プログラムです。
(26.45 KiB) ダウンロード数: 105 回
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: 簡単な通信対戦

#5

投稿記事 by みけCAT » 13年前

観戦モードの不都合を改善しました。
添付ファイル
netvstest_5.zip
プログラムです。
(26.49 KiB) ダウンロード数: 158 回
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
ひよこ
記事: 25
登録日時: 13年前

Re: 簡単な通信対戦

#6

投稿記事 by ひよこ » 13年前

さっきダウンロードして試してみましたがすごいですね。
こういう通信ができるなんてうらやましいです。
私は、こういう通信関係のプログラミングができないのでアドバイスとかできません。すみません。
勉強になると思うのでソースを参考にさせて頂きます。

アバター
Ciel
記事: 252
登録日時: 13年前

Re: 簡単な通信対戦

#7

投稿記事 by Ciel » 13年前

これどう使うんですか?

すごい興味はあるんですけど、使い方がわかりません;
oui C'est la Vie♪

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: 簡単な通信対戦

#8

投稿記事 by みけCAT » 13年前

Ciel さんが書きました:これどう使うんですか?

すごい興味はあるんですけど、使い方がわかりません;
とりあえず作ったけどまだうpしていないReadMeを載せておきます。

コード:

・UDP使用。テスト時にはUDPのポートを開放すべし
・改造・再配布無断でOK。商用もOK。煮るなり焼くなり好きにして。
・矢印キーで移動
・サーバーはIPアドレスとドメインどちらでもOK。
・10秒通信がないとログアウトさせられます。
・ログアウトは×orAlt+F4でOK。
・参加するクライアント(サーバーに接続する側)のとき
最初に出てくるダイアログボックスに次の項目を入力します。
名前:表示される自分の名前
サーバー:接続先サーバーのIPアドレスかドメイン
ポート:接続先サーバーのポート(サーバーで指定したものと同じものを指定します)
ラジオボタンを「クライアント」にします。
「OK」を押します。
サーバーにつながれば色がついた×印が出てきます。
接続に失敗した場合、10秒で終了します。
自分の×印は矢印キーで動かせます。
左には参加中のメンバー一覧が出ています。

・観戦モード(サーバーに接続し、見ているだけ)のとき
最初に出てくるダイアログボックスに次の項目を入力します。
サーバー:接続先サーバーのIPアドレスかドメイン
ポート:接続先サーバーのポート(サーバーで指定したものと同じものを指定します)
ラジオボタンを「観戦」にします。
名前は入力する必要がありません。
「OK」を押します。
サーバーにつながれば色がついた×印が出てきます。
接続に失敗した場合、10秒で終了します。
左には参加中のメンバー一覧が出ています。

・サーバー(接続を待ち受ける側)のとき
最初に出てくるダイアログボックスに次の項目を入力します。
名前:表示される自分の名前
ポート:接続を待ち受けるポート
ラジオボタンを「サーバー」にします。
必要に応じて「ポート開放」をします。(詳しくはググってください)
ダイアログボックスで指定した番号のUDPのポートを開放してください。
Windowsファイアウォールの画面が出てきたら「ブロックを解除する」を押します。
「ブロックする」を押してもローカルならつながるかもしれません。(直接は未確認)
色のついた×印(黒含む)が出てきます。
左には参加中のメンバー一覧が出ています。
自分の×印は矢印キーで動かせます。

他にわからないことがありましたらまた聞いてください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

“C言語何でも質問掲示板” へ戻る