如何在Java中为Socket客户端获取动态端口号

时间:2016-05-10 10:43:04

标签: java sockets

我试图找出如何获得Portnumber for Socket动态。

ServerSocket s = new ServerSocket(0);
System.out.println("listening on port: " + s.getLocalPort())

我在StackOverflow上找到了这个例子。它工作,但我不需要ServerSocket。我需要一个套接字:

Socket s = new Socket("http://www.google.at", 8081);
System.out.println("listening on port: " + s.getLocalPort())

我在谷歌搜索并没有找到解决方案。也许有人可以帮助我。我确信有一种方法可以获得Portnumber for Socket Dynamic。但我无法在StackOverflow和谷歌上找到它。

我已经尝试过这个:

Socket s = new Socket("http://www.google.at", 0);
System.out.println("listening on port: " + s.getLocalPort())

问候 克里斯托夫

1 个答案:

答案 0 :(得分:1)

您已经找到了解决方案。 Socket.getLocalPort()为您提供Socket的本地端口。很奇怪的是。如果您没有绑定Socket,或者将其绑定到端口0,则会动态分配本地端口。

new Socket("...", 0)(a)是非法的,并且(b)构成连接到动态远程端口的尝试,如果它是合法的,它不是。< / p>

为什么你需要知道Socket的本地端口是另一个问题。

NB ServerSockets听。 Sockets连接。