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

How ServerSocket deal with multiple connection from clients at the same time?

好的,让我们澄清一下问题...

我在Java学习套接字,据我了解到现在,与这个主题相关的有:

基于此,我对某些事情感到困惑并且直到现在都无法在这里或 Google 找到任何可接受的答案。

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

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

  3. 同样的问题,但是来自多个客户端的多条消息?

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

抱歉所有这些问题,但对我来说所有这些问题都是相关的...

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

what happens if 2 clients try to connect AT THE SAME TIME

2 个客户端不可能同时连接:网络基础设施可以保证这一点。同时发生的两个请求称为 collision (wikipedia), and the network handles it in some way: it can be through detection or through avoidance.

How the server process multiple messages from one client? I mean, does it process in order?

是的。 Socket class API 使用 TCP/IP 协议,它在每个段和 re-orders 段中包含序列号,以便按顺序处理它们发送顺序可能与接收顺序不同。

如果您改用 DatagramSocket,那将使用 UDP,这不能保证顺序。

Same question above BUT with multiple messages from multiple clients?

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