0

这个声明会做什么:

ServerSocket ss=new ServerSocket(4646);

请通俗地解释一下。

4

4 回答 4

1

直接来自ServerSocketJava 文档

创建一个绑定到指定端口的服务器套接字。

什么是服务器套接字?

此类实现服务器套接字。服务器套接字等待通过网络进入的请求。它根据该请求执行一些操作,然后可能将结果返回给请求者。

于 2011-03-29T18:44:49.037 回答
1
public ServerSocket(int port) throws IOException

文档:

创建一个绑定到指定端口的服务器套接字。端口 0 在任何空闲端口上创建一个套接字。

于 2011-03-29T18:45:20.800 回答
1

该语句有效地告诉 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();
    }
  }
}

这样您就可以接受传入的连接并为它们打开一个线程。

于 2011-03-29T18:47:46.390 回答
0

这会将您的 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);
于 2011-03-29T18:43:05.343 回答