を受け入れる:ServerSocketのは、私は次のコードスニペット持って行動
if (servsock == null) {
System.out.println("HELLO1!");
servsock = new ServerSocket(63456, 10);
System.out.println("HELLO2!");
}
try {
System.out.println("HELLO3!");
sock = servsock.accept();
} catch (Exception ex) {
if (servsock != null && !servsock.isClosed()) {
System.out.println("PICO1!");
servsock.close();
}
if (servsock != null && servsock.isClosed()) {
System.out.println("PICO2!");
manager.log("SERVER SOCKET closed and nulled.");
servsock = null;
}
sock = servsock.accept();
}
System.out.println("HELLO4!");
is = sock.getInputStream();
System.out.println("HELLO5!");
bis = new BufferedInputStream(is);
System.out.println("HELLO6!");
にこのコードを実行可能なのrun()
方法で実行され、ファイルが転送されたとき、すべての通信を停止することになっています。
好奇心は、ループではないということです。コードは受け入れますが、ファイル転送を行いますが、なぜHELLO1が私の画面に再び表示されるのか分かりません。したがって、このコードをもう一度実行しようとすると、「接続が拒否されました」というメッセージが表示されます。
「10」は私のハックでしたが、元のコードではバックログも使用しませんでした。
お願いします。
以前を実行する実行しているコードがあることである:正確な問題は、今私は新しいServerSocketを(63456)コマンドに達したときに、クライアントが「接続拒否」を取得しますが、そのプログラムを、ある
final IClientInterface clientInterface = client.getClient();
final prgHolder = new ProgHolder();
Pong ftppong = new Pong();
ftppong.setFileNames(bout64.toByteArray());
ftppong.setDstFolder(dstFolder);
prgHolder.setName("pong");
prgHolder.setTask(pong);
Thread t = new Thread(new Runnable() {
public void run() {
try {
IClientInterface.execute(prgHolder);
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
t.start();
離れたPCで、広く開いて幅広いリスナーです! "netstat"はそれを確認します!
私は別のウィンドウからプログラムを再実行し、すべてのHELLOメッセージを渡してジョブを完了させます。
スレッドは遠いPCで停止し、ポート63456をバインド解除します!
なぜコードとして失敗しますが、着信要求を受け入れますか?
私はエラーの正確な箇所を発見しました。それはスレッドの後です。 t.start()の後に。私はこれを行う場所: "Socket sock = new Socket(" distantmaching "、63456);コードがちょうどそこにぶら下がっていますスレッドの直後です。理論によると、私はサーバスレッドをセットアップしクライアントがその接続を取得する必要があります小さなスニペット、右?それは動作していないようです。 – hephestos
windows windows:問題ありません。サーバーを接続として受け入れるためのサーバーとして失敗します。 – hephestos