-1

Mac を使用していて、ローカル マシンでサーバーを実行しようとしています。ここにコードがあります

//1. creating a server socket
        providerSocket = new ServerSocket(0, 10);
        //2. Wait for connection
        System.out.println("Waiting for connection");
        try{
        connection = providerSocket.accept();
        }
        catch (IOException ex){
            System.err.println(ex);
        }
        System.out.println("Connection received from " +                   connection.getInetAddress().getHostName());

「Waiting for Connection」という出力が表示されますが、「Connection received from ...」の出力は表示されません。コードがまだ実行されていることがわかります。つまり、accept() がブロックされていることを意味します。どうすればこれを修正できますか?

4

3 に答える 3

1

このサーバーに接続するクライアントが必要です。それまでサーバーは待機します。

このリンクを確認してください:

http://www.javaworld.com/jw-12-1996/jw-12-sockets.html

于 2013-03-28T14:49:24.153 に答える
1

0ポート番号として使用しているためServerSocket、使用可能な空きポートでリッスンすることを意味します。クライアントがそのポートでサーバーに接続していることを確認する必要があります。ポートは で取得できますServerSocket.getLocalPort()

より良い方法は、ポート番号をハードコーディングし、クライアントをそのポートに接続させることです。

于 2013-03-28T14:58:26.600 に答える
0

accept() は、接続が確立されるまでブロックします。実際にソケットにアクセスしようとしているクライアントはありますか? そうでない場合は、次のJava トレイルを試してみるとよいと思います。

于 2013-03-28T14:48:43.307 に答える