【问题标题】:How could one single server socket communicate with multiple client sockets一个服务器套接字如何与多个客户端套接字通信
【发布时间】:2014-01-08 04:06:41
【问题描述】:

我看过这篇文章

http://docs.oracle.com/javase/tutorial/networking/sockets/definition.html

因为它写道:

如果一切顺利,服务器接受连接。之上 接受,服务器获得一个绑定到同一个本地端口的新套接字 并且还将其远程端点设置为 客户。它需要一个新的套接字,以便它可以继续监听 原始套接字用于连接请求,同时倾向于需要 已连接的客户端。

那么服务器端是否有多个具有相同端口的服务器套接字?

【问题讨论】:

  • 是的,服务器使用一个预定义的端口号。客户端可能正在使用动态端口。套接字的唯一标识符是客户端 IP 和端口号(当然是服务器套接字的组合)。

标签: java sockets


【解决方案1】:

有一个ServerSocket。它通过accept() 方法接受传入连接。这将返回一个Socket,您可以在服务器端使用它来处理与特定客户端的连接。

【讨论】:

  • 另外:ServerSocket(内部)通常维护一个侦听器队列,以处理多个连接一个接一个到达的情况。默认值通常是 50 左右,因此您不需要经常弄乱它,但其中一个 ServerSocket 构造函数 (download.java.net/jdk7/archive/b123/docs/api/java/net/…) 将接受一个参数来让您增加它。
  • @JVMATL 它不维护“侦听器队列”。它在内核中维护一个已完成入站连接的积压队列。
猜你喜欢
  • 2012-08-30
  • 2012-11-02
  • 2022-09-28
  • 1970-01-01
  • 1970-01-01
  • 2017-08-23
  • 1970-01-01
  • 1970-01-01
  • 2012-09-17
相关资源
最近更新 更多