0

クライアントによって接続が確立されると、なぜこのポート/ソケットが閉じるのですか?

package app;

import java.io.*;
import java.net.*;

public class socketServer {

public static void main(String[] args) {
    int port = 3333;
    boolean socketBindedToPort = false;

    try {
        ServerSocket ServerSocketPort = new ServerSocket(port);
        System.out.println("SocketServer Set Up on Port: " + port);
        socketBindedToPort = true;

        if(socketBindedToPort == true) {
            Socket clientSocket = null;

            try {
                clientSocket = ServerSocketPort.accept();//This method blocks until a socket connection has been made to this port.
                System.out.println("Waiting for client connection on port:" + port);
                /** THE CLIENT HAS MADE A CONNECTION **/
                System.out.println("CLIENT IS CONENCTED");
            } 
            catch (IOException e) {
                System.out.println("Accept failed: " + port);
                System.exit(-1);
            }
        }
        else {
            System.out.println("Socket did not bind to the port:" + port);
        }
    }
    catch(IOException e) {
        System.out.println("Could not listen on port: " + port);
        System.exit(-1);
    }



}


}
4

4 に答える 4

4

テストされていませんが、プログラムに他に何も残っていないためだと確信しています。一度ServerSocketPort.accept(); 終了すると、プログラムはメインの終わりに到達して終了します。

于 2012-04-09T05:29:59.717 に答える
0

プログラムは完全に正常に実行されています。クライアントが接続するか、ServerSocketがタイムアウトするとすぐに停止します。ここでのあなたの目標は何ですか?

于 2012-04-09T05:59:14.213 に答える
0

クライアントに反応するストリームを追加する必要があります。

これを試して:

Socket accepted = serverSocketPort.accept();
InputStream inStr = accepted.getInputStream();
于 2012-04-09T05:32:39.097 に答える
0

@マシュー。

私見、ジョエルはあなたの質問に最も近い答えを持っています。

「接続を受け入れた後にプログラムが存在するため、接続が閉じられます」

通常、acceptはループで実行されるため、サーバーはポートで接続要求をリッスンし続けます

于 2012-04-09T06:10:43.820 に答える