Socket Accept问题。

a291410855 2012-05-17 10:03:39
服务端支持多客户端连接时加一个线程

While(true){
Socket sok = socketWatch.Accept();
//ShowMsg("连接成功");
}

这里有一点我不理解。当两个客户端同时连过来的时候程序是怎么处理的呢?
或者说第一个客户端还在Accept(还没开始又一次循环)第二个客户端这时也请求连接。程序是怎么处理的呢?
...全文
120 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
a291410855 2012-05-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

两个客户端完全同时到达的可能性有多大呢?Accept的时间也不会太久吧,我想~~
[/Quote]
我不知道有多大,不过我只是想深入的理解一下。加深印象。
Mistiness 2012-05-17
  • 打赏
  • 举报
回复
对于TCP套接字,在服务器端通常采用下面的语句来实现:
ServerSocket serverSocket = new ServerSocket(8000); (1)
Socket socket = serverSocket.accept(); (2)
第(1)句创建了一个能监听某些客户机“敲门”声的门,serverSocket在8000端口上监听;当某些客户机与serverSocket连接时,第(2)句创建了一个新的套接字,称为socket,这个套接字也使用8000端口,这时,两个套接字使用了相同的端口号,因为TCP连接套接字由一个四元组(源IP地址,源端口号,目的IP地址,目的端口号)来标识,UDP套接字(面向无连接的)由一个包含目的IP地址和目的端口号组成的二元组来标识。之后,TCP在客户端的clientSocket和服务器端的socket之间建立了一条直接的虚礼管道,该客户机与服务器可以通过该管道彼此发送字节,并且发送的所有字节将按顺序到达对方。随着socket的建立,该服务器能继续使用serverSocket监听其它客户机的连接请求。
EdsionWang 2012-05-17
  • 打赏
  • 举报
回复
两个客户端完全同时到达的可能性有多大呢?Accept的时间也不会太久吧,我想~~

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧