我正在做一个简单的练习来理解套接字和服务器套接字。当myServerSocket = new ServerSocket(0)
端口被随机分配到该插座。我想知道如何设置客户端连接到该端口。如果客户端随机分配,客户端如何查找侦听端口?Java客户端/服务器套接字端口分配
下面是代码从服务器和客户端类的代码片段:
服务器:
public static void main(String[] args) {
try {
// First we create a server socket and bind it to a random port.
ServerSocket myServerSocket = new ServerSocket(0);
// wait for an incoming connection...
System.out.println("Server is waiting for an incoming connection on host="
+ InetAddress.getLocalHost().getCanonicalHostName()
+ " port=" + myServerSocket.getLocalPort());
Socket skt = myServerSocket.accept();
客户:
public static void main(String[] args) {
// create a socket and bind it to the host/port server is listening on.
String host;
int port;
if(args.length==0) {
host = "localhost";
port = 9999;
} else {
host = args[0];
String portStr = args[1];
try {
port = Integer.parseInt(portStr);
} catch (NumberFormatException nfe) {
System.out.println("Whoops, invalid port number. Will default to 9999");
port = 9999;
}
}
客户端必须知道服务器侦听的确切端口号 – 2015-02-10 20:43:12
上述内容。否则某种类型的端口扫描,但我猜测,除非使用一些启发式(或随机端口函数的最小值[即范围]收紧),否则需要很长时间才能通过所有端口。 – noumenal 2015-02-10 20:47:05