• 締切済み

簡単なオンラインゲーム

簡単なオンラインゲーム作ろうとしてるんですがローカル(宅内)では既に動かせる状態まで来ています。 外部からのパケットも受け取れてる状態ですが、外からのログインがどうしてもできません。 なので、あとは外部アクセスだけできれば一応公開可能な状態まで来ています。ちなみに友人数人にクライアントをインストールしてもらい、マップファイルを受け渡して接続先をウチの鯖PC(グローバルIP)に設定した上で接続すると、鯖プログラム上でしっかりパケットは受けてます。 返信する上で何か障害があるようで、そこがハッキリできません。 パケットみてみると checksumとかoffloadなる文字が。 調べてみましたが、どうやらデータの不一致みたいなのでその辺わかる方いませんか?

みんなの回答

回答No.3

普通の一般家庭では、ADSL用モデム、光回線ルーター、ウィルス対策ソフト、ファイヤウォールの設定などは「外部から入って来る、何なのか良くわかんないパケットは、すべて拒否する」って設定になっているのが普通です。 なので、使ってるポートを各クライアントで解放してもらわないと「サーバーから返した返信が、モデムやルーターやウィルス対策ソフトやファイヤウォールで弾かれて、クライアントソフトに届かない」って事が起きます。 で、そういう「フィルタリングされて届かない時」には、送信元に「ちゃんと届かないから、もう送るな。もう諦めろ」って事を知らせる必要があるので、checksumエラーだとかoffloadが起きたとか、適当な「エラー事由」をくっ付けて、エラー情報を(サーバに)返します。 もし「拒否してエラー情報を返さずに放置」だと、送信元(のサーバ)のNICは「おかしいなあ、届かないなあ、とりあえずリトライしてみっか」と、何度も送信を試みてしまいます。 なのでパケットを受信拒否する場合は「checksumエラーだぞ~、リトライできね~エラーだぞ~」ってのを返し、送信元が再送しないようにします。 まずは「クライアント側のPCやモデムやルータで、パケットが拒否られてないかどうか」を確かめましょう。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

単にパケットキャプチャの表示の問題な気もしますが、NICでチェックサムを計算させているとキャプチャ上はチェックサムがエラーになるって現象です。 とりあえずクライアント側でパケットをサーバーからのパケットをキャプチャしてみないとまずいと思いますよ。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

C/C++のカテゴリーよりも、どこかネットワーク関連のカテゴリーの方が、 話をする場所としてふさわしいと思います。 オンラインゲームをC/C++で作ろうとしているがうまくできない、 というたぐいの話ではありませんしね。