首页 文章

在TCP MultiThreaded Server中,如果客户端获得服务,如何查找服务套接字的端口号?

提问于
浏览
-1

在TCP Multi Threaded Server中,如果客户端获得服务,如何查找服务套接字的端口号?

来自Sun Java教程

当请求并成功 Build 连接时,accept()方法返回一个新的“Socket对象”,该对象绑定到同一本地端口,并将其远程地址和远程端口设置为客户端的端口 . 服务器可以通过此新Socket与客户端通信,并继续侦听原始ServerSocket上的客户端连接请求 .

如何找到“ Socket 对象”的端口号?

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() 返回 ServerSocket 构造函数中指定的端口,但 getPort() 每次都返回一个不同的端口 .

相关问题