-1

TCPマルチスレッドサーバーで、クライアントがサービスを受ける場合、サービスソケットのポート番号を見つける方法は?

SunJavaチュートリアルから

接続が要求されて正常に確立されると、accept()メソッドはSocket同じローカルポートにバインドされ、リモートアドレスとリモートポートがクライアントのリモートアドレスに設定された新しい「オブジェクト」を返します。サーバーは、この新しいものを介してクライアントと通信しSocket、元のクライアント接続要求を引き続きリッスンできますServerSocket

Socket「オブジェクト」のポート番号を確認するにはどうすればよいですか?

4

1 に答える 1

1

あなたがしたいことをしSocket.getPort()ませんか?または、ローカルポートが必要なことを意味しますか(ここでもありSocket.getLocalPort()ますか?あなたが求めているものの実際の例を示すことができれば、理解しやすくなります。

簡単な例を次に示します。

import java.net.*;

public class Test {
    public static void main(String[] args) throws Exception {
        ServerSocket ss = new ServerSocket(50000);
        while (true) {
            Socket s = ss.accept();
            System.out.println("Local: " + s.getLocalPort() + 
                               "; Remote: " + s.getPort());
        }
    }
}

そのコードを実行して複数回接続すると、次のような出力が得られます。

Local: 50000; Remote: 17859
Local: 50000; Remote: 17866
Local: 50000; Remote: 17872

したがって、コンストラクターでgetLocalPort()指定されたポートを返しますが、毎回異なるポートを返します。ServerSocketgetPort()

于 2010-07-02T06:27:10.907 に答える