如何在java中获取socket客户端的动态端口号

kcugc4gi  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(734)

我试图找出如何获取套接字动态的端口号。

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

我在stackoverflow上找到了这个例子。它的作品,但我不需要一个服务器插座。我需要一个插座:

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

我用谷歌搜索,没有找到解决办法。也许有人能帮我。我确信有一种方法可以获得socket动态的端口号。但我在stackoverflow和google上都找不到。
我已经试过这个了:

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

你好,克里斯托夫

nhhxz33t

nhhxz33t1#

你已经找到解决办法了。 Socket.getLocalPort() 给你一个本地港口 Socket . 奇怪的是。如果你还没绑好的话 Socket ,或者将其绑定到端口0,则本地端口是动态分配的。 new Socket("...", 0) (a) 是非法的,并且(b)将构成连接到动态远程端口的尝试,如果它是合法的,那么它不是。
为什么你要知道当地的港口 Socket 这是另一个问题。
注意 ServerSockets 听。 Sockets 连接。

相关问题