1

Java ソケットを使用してクライアントとサーバーを作成しました。2 台のマシンは同じネットワーク上にあります。ローカル IP アドレスを使用して接続すると、問題はありません。ただし、パブリック IP アドレスを使用すると、接続がタイムアウトし、クライアントが「SocketException: connection reset」をスローし、サーバーが「SocketException: connection reset by peer: socket write error」をスローします。これはほとんどの場合に発生しますが、ブルームーンに一度接続が実際に成功します。クライアントマシンからサーバーのローカルアドレスとルーターに正常にpingできます。

ルーターにアクセスし、サーバー マシンに永続的な IP アドレスを割り当て、関連するポートのすべてのトラフィックをその IP アドレスに転送しました。残念ながら、それが問題を解決できると私が思った唯一のことでしたが、解決しませんでした. サーバーのWindowsファイアウォールもオフにしましたが、まだうまくいきません。

クライアント: (whatismyip.com から取得した IP)

Socket s = new Socket("xx.xxx.xxx.xx", 27499);

接続する。

サーバー:

InetAddress ip = InetAddress.getLocalHost();
ServerSocket ss = new ServerSocket(27499, 0, ip);
Socket cs = ss.accept();

どんな助けでも大歓迎です。必要に応じて、さらにコードを提供できます。

4

1 に答える 1

0

「SocketException: ピアによる接続のリセット: ソケット書き込みエラー」

これは、サーバーが実際に接続を拒否していることを意味します。ファイアウォールの問題、サーバーが接続を拒否している、サーバーが実際にダウンしているか過負荷になっている可能性があります。

于 2013-04-19T00:48:19.797 に答える