ServerSocket如何同时处理来自客户端的多个连接



好的,让我们来澄清问题。。。

我正在学习Java中的套接字,从我理解到现在,与这个主题相关的是:

  • 若要使多个客户端仅连接到服务器(端口(中的一个地址,则需要将每个客户端连接分配给另一个线程

基于此,我对一些事情感到困惑,直到现在,我在这里或谷歌都找不到任何可以接受的答案。

  1. 如果套接字是同步的,如果两个客户端同时尝试连接会发生什么?服务器如何决定谁先连接?

  2. 服务器如何处理来自一个客户端的多条消息?我的意思是,它按顺序处理吗?是否已订购退货?

  3. 上面的问题相同,但来自多个客户的多条消息?

  4. 如果消息没有排序,如何实现?(java(

很抱歉有这么多问题,但对我来说,所有问题都是相关的。。。

编辑:正如评论所说,我误解了同步的概念,所以更改了这一部分。伙计们,我们在这里要求学习不要被其他人评判,所以在投-1票之前考虑一下

如果两个客户端尝试同时连接会发生什么

两个客户端不可能完全同时连接:网络基础设施保证了这一点。两个完全同时发生的请求被称为冲突(维基百科(,网络以某种方式处理它:可以通过检测或避免。

服务器如何处理来自一个客户端的多条消息?我的意思是,它按顺序处理吗?

是。Socket类API使用TCP/IP协议,该协议包括每个段中的序列号,并对段进行重新排序,以便按发送顺序对其进行处理,这可能与接收顺序不同。

如果您使用DatagramSocket,则将使用UDP,这不能保证排序。

上面的问题相同,但来自多个客户端的多条消息?

无法保证从多个来源发送的段的相对顺序。

最新更新