在java中获取用于tcp连接的开放套接字

时间:2011-01-31 14:30:36

标签: java sockets networking tcp port

我正在使用Java开发一个torrent,我有一个小问题。如何在java中为我的进程获取一个打开的套接字?我需要一个序列中大约100个免费套接字,就像10000-10100一样。我所知道的就是使用

socket = new Socket(ip, port);

我们需要提供ip和端口。当然这是调试的情况,我的ip是环回,但我只能通过在端口字段中使用随机数找到一个空闲端口。请告诉我如何为tcp找到一系列空闲端口。

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

您无法保证免费端口号。你必须扫描机器上的端口,寻找1024到65535之间的空闲端口。如果你想创建一个客户端套接字,你必须尝试从你想要的每个本地端口连接,中止并重新启动,如果你遇到一个使用过的端口 - 当然,如果另一个应用程序试图抓住端口,这可能会继续发生。对于服务器套接字,您必须尝试按顺序绑定到每个端口。

对于客户端套接字,是否需要指定本地端口?如果没有,只需分配所需的连接数。对于服务器套接字,我只是假设我拥有所有端口,例如10000到10100.虽然启动一百台服务器可能不是你想要做的。

使用Java中的任何网络,而不是使用Java .net包,而是使用更容易使用的Netty

答案 2 :(得分:0)

为什么在客户端需要一系列端口号您可以通过新的ServerSocket(0)获取一个免费的监听端口并询问本地端口。但是没有充分的理由说明为什么你需要一系列的客户端端口号(除了过热的出站​​防火墙规则,netadmins有时指定这些规则而没有意识到没有API可以使用它们。)