3

UDP を使用して Java でクライアント サーバー アプリケーションを実現しようとしています。問題は、クライアントがサーバーに接続し、サーバーがクライアントを登録し、別のアプリケーションが clientIP と clientPort を使用してクライアントに接続しようとする場合です。クライアントはデータを取得できません。

クライアントの IP とポートを使用して DatagramSocket を再作成し、クライアントに接続することができましたが、これを別のアプリケーションで行うと、通信が行われません。

サーバー上のクライアントをリッスンしているポートは、サーバー アプリケーションが使用しているポートとは異なります。

どうすればこのコミュニケーションを達成できますか?

私を助けてください。ありがとうございました。

4

2 に答える 2

1

「クライアントがサーバーに接続するとき..」というあなたのコメントは、クライアントの DatagramSocket で connect() を使用したかどうか疑問に思いました。その場合、ソケットで connect() を呼び出さないでください。UDP はコネクションレス プロトコルであり、connect() は必要ありません。UDP ソケットで connect() を呼び出すと、ソケットは connect() で指定されたホストとの間でのみデータを送受信できます。

そうでない場合、私が考えることができる唯一の理由は、クライアント マシンでファイアウォールが有効になっている可能性があるか、クライアントとサーバーまたは他のホストの間に NAT/ファイアウォールがあることです。クライアントが他のアプリからパケットを受信して​​いるかどうかを Wireshark で確認します。

お役に立てれば。

于 2011-06-17T09:08:18.837 に答える
0

ポイントを見逃しているかもしれませんが、クライアントがサーバー上で実行されている他のアプリケーションによる接続試行を受け入れることができるようにするには、クライアントにリスニングモジュールを実装する必要があると思います(着信接続を受け入れるサーバーのような部分)。ここでいくつかの有用な例を見つけることができます: http://www.java2s.com/Code/Java/Network-Protocol/UDP.htm

于 2011-03-31T07:52:27.273 に答える