这个声明会做什么:
ServerSocket ss=new ServerSocket(4646);
请通俗地解释一下。
直接来自ServerSocket
Java 文档:
创建一个绑定到指定端口的服务器套接字。
什么是服务器套接字?
此类实现服务器套接字。服务器套接字等待通过网络进入的请求。它根据该请求执行一些操作,然后可能将结果返回给请求者。
该语句有效地告诉 JVM 在指定的端口 (4646) 上侦听传入连接。它本身没有任何意义,因为您必须将传入连接连接到该端口并使用它们来构建普通Socket
对象,然后将其用于传入/传出数据。
你可以说它ServerSocket
是创建客户端和服务器之间真正的 TCP 套接字的对象。当您创建它时,JVM 会挂接到操作系统,告诉它将到达该端口的连接分派给您的程序。
你通常做的是这样的:
public AcceptThread extends Thread {
public void run() {
ServerSocket ss = new ServerSocket(4646);
while (true) {
Socket newConnection = ss.accept();
ClientThread thread = new ClientThread(newConnection);
thread.start();
}
}
}
这样您就可以接受传入的连接并为它们打开一个线程。
这会将您的 ServerSocket 绑定到本地计算机上的端口 4646。
然后,您可以接受此连接上的套接字
// pick up server side of the socket
Socket s = ss.accept();
现在,您的客户端可以连接到您的服务器,建立一个套接字连接,就像这样
// pick up client side of the socket, this is in a different program (probably)
Socket connectionToServer = new Socket("myserver",4646);