我了解到Server应用程序在特定端口中创建了一个ServerSocket,
ServerSocket ServerSock=new ServerSocket(9000);
和客户端建立与服务器应用程序的套接字连接,
Socket sock=new Socket("127.0.0.1","9000");
所以客户端知道服务器的IP地址和端口,我很困惑服务器如何以及何时获得有关客户端的知识。请帮忙。
提前完成了!
答案 0 :(得分:6)
服务器正在“侦听”来自客户端的传入连接。想象一下,端口号是门号,服务器正在门口等候客人。
因此,当服务器应用程序执行serverSock.accept()时,它实际上会阻塞并等待客户端到达。
一旦客户端尝试连接,accept()方法将解除阻塞并返回另一个Socket实例,这次代表客户端。
通过新的Socket实例,您可以知道客户端是谁。服务器应用程序代码的一个示例是:
ServerSocket serverSock=new ServerSocket(9000);
Socket clientSock = serverSock.accept(); //this will wait for a client
System.out.println("Yay we have a guest! He's coming from " + clientSock.getInetAddress());
答案 1 :(得分:2)
服务器接受ServerSock.accept()
的客户端。 Here是一个教程。
答案 2 :(得分:0)
嗯,客户端知道要连接的服务器的IP和端口
然后客户端尝试连接服务器
为此,将为客户端进程分配一个ephimeral端口,以便如果服务器的TCP层接受请求连接(服务器正在侦听并尝试接受连接),则服务器可以使用客户端套接字。客户端的IP和端口。
所以现在服务器如何回到客户端。