我如何在java中选择哪个端口可以免费用于ServerSocket或Socket?

Bil*_*que 2 java sockets

我正在研究java.我如何检查端口是否可以免费使用ServerSocket?此外,当accept()函数返回Socket时,它默认给出一个端口和IP地址,或者我也必须指定它?

R. *_*olt 6

您可以使用java.net.ServerSocket与端口构造0告诉ServerSocket找到一个空闲端口.

文件:

port - 端口号,或0表示使用自动分配的端口号.

例:

int port = -1;
try {
    ServerSocket socket = new ServerSocket(0);
    // here's your free port
    port = socket.getLocalPort();
    socket.close();
} 
catch (IOException ioe) {}
Run Code Online (Sandbox Code Playgroud)


wad*_*oup 2

使用 Try catch 查找空闲端口

private static int port=9000;
public static int detectPort(int prt)
{
try{
//connect to port
}
catch(Exception e)
{
return detectPort(prt+1);
}
return prt;
}

// Write detectPort(port); inside main
Run Code Online (Sandbox Code Playgroud)