ServerSocket 如何同时处理来自客户端的多个连接?
How ServerSocket deal with multiple connection from clients at the same time?
好的,让我们澄清一下问题...
我在Java学习套接字,据我了解到现在,与这个主题相关的有:
- 要让多个客户端只连接到服务器中的一个地址(端口),那么需要将每个客户端连接分配给另一个线程
基于此,我对某些事情感到困惑并且直到现在都无法在这里或 Google 找到任何可接受的答案。
如果 Socket 是同步的,如果 2 个客户端尝试同时连接会发生什么,服务器如何决定谁先连接?
服务器如何处理来自一个客户端的多条消息?我的意思是,它按顺序处理吗? Return 已订购?
同样的问题,但是来自多个客户端的多条消息?
如果消息没有排序,如何实现? (在 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?
无法保证从多个来源发送的段的相对顺序。
好的,让我们澄清一下问题...
我在Java学习套接字,据我了解到现在,与这个主题相关的有:
- 要让多个客户端只连接到服务器中的一个地址(端口),那么需要将每个客户端连接分配给另一个线程
基于此,我对某些事情感到困惑并且直到现在都无法在这里或 Google 找到任何可接受的答案。
如果 Socket 是同步的,如果 2 个客户端尝试同时连接会发生什么,服务器如何决定谁先连接?
服务器如何处理来自一个客户端的多条消息?我的意思是,它按顺序处理吗? Return 已订购?
同样的问题,但是来自多个客户端的多条消息?
如果消息没有排序,如何实现? (在 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?
无法保证从多个来源发送的段的相对顺序。