好的,让我们来澄清问题。。。
我正在学习Java中的套接字,从我理解到现在,与这个主题相关的是:
- 若要使多个客户端仅连接到服务器(端口(中的一个地址,则需要将每个客户端连接分配给另一个线程
基于此,我对一些事情感到困惑,直到现在,我在这里或谷歌都找不到任何可以接受的答案。
-
如果套接字是同步的,如果两个客户端同时尝试连接会发生什么?服务器如何决定谁先连接?
-
服务器如何处理来自一个客户端的多条消息?我的意思是,它按顺序处理吗?是否已订购退货?
-
上面的问题相同,但来自多个客户的多条消息?
-
如果消息没有排序,如何实现?(java(
很抱歉有这么多问题,但对我来说,所有问题都是相关的。。。
编辑:正如评论所说,我误解了同步的概念,所以更改了这一部分。伙计们,我们在这里要求学习不要被其他人评判,所以在投-1票之前考虑一下
如果两个客户端尝试同时连接会发生什么
两个客户端不可能完全同时连接:网络基础设施保证了这一点。两个完全同时发生的请求被称为冲突(维基百科(,网络以某种方式处理它:可以通过检测或避免。
服务器如何处理来自一个客户端的多条消息?我的意思是,它按顺序处理吗?
是。Socket
类API使用TCP/IP协议,该协议包括每个段中的序列号,并对段进行重新排序,以便按发送顺序对其进行处理,这可能与接收顺序不同。
如果您使用DatagramSocket
,则将使用UDP,这不能保证排序。
上面的问题相同,但来自多个客户端的多条消息?
无法保证从多个来源发送的段的相对顺序。