2016-12-23 13 views
0

リトルファイター2(LF2)と呼ばれるゲームがあります。これはオンラインで再生でき、ポート12345でTCPを使用します。ゲームは別のゲームインスタンスからのTCP接続を受け付けますが、自分のプログラムは受け付けません。どうやって?

ポート12345をリッスンしてゲームを接続するJavaプログラムを作成しました。予想どおり、私のJavaプログラムはパケットを受信して​​いないのにTCP接続を確立しました。

次に、ポート12345に接続してゲームサーバーを開くためのJavaプログラムを作成しました。驚いたことに、私は接続が拒否されている。 Javaプログラムがゲームで期待どおりに動作しないため、接続が切断されることがありますが、少なくとも最初は接続されると思っていました。

私はゲームの2つのインスタンスを開いてお互いに接続することができます。

私の単純なJavaプログラムではなく、別のゲームインスタンスからの接続をゲームが受け入れる原因は何ですか?私は、接続を確立する前に2つのケースを区別するのに十分な情報がないと考えました。

答えて

0

これは単純ではありません。クライアントが送信しているパケットを知る必要があります。おそらく、クライアントは接続を受信すると何かをサーバーに送ります。

wireshark(パケットをキャプチャするプログラム)やWPE Pro(私はこれよりもはるかに単純です)のようなプログラムを使用する必要があります。ほとんどのゲームはパケットを暗号化しています(ラッキーなゲームでは生のパケットを送信し、ゲームを逆にする必要はありません)ので、パケットを暗号化/復号化するアルゴリズムを知る必要がありますクライアントexeをリバースエンジニアリングし、winsock受信機能を探します)。

+0

私が知っている限り、サーバーはクライアントから情報を受け取る前に、まず接続を受け入れる必要があります(正しく動作していないと検出する可能性があります)。幸運にも私はちょうどトンネリングが必要なので、パケットを理解する必要はありません。しかし、私は実際のパケットを見ていくつかのアイデアを得ることができるかどうかを見ていきます。ありがとう! –

+0

シンプルです:ゲームは、両方が同じであれば、別のゲームやクライアントと話しているかどうかを知ることができません。あなたが説明したものは、しかし、ノックパターンのように聞こえる。多分あなたは秘密のコードとして特定の間隔で接続を開いたり閉じたりする必要があります。しかし、単にゲームセッションをトンネルしたいのであれば、WindowsであればSSHまたはPPTPを使うことをお勧めします。設定は簡単です。 – KeksArmee

関連する問題