我正在用 C# 编写一个即时消息服务器用于学习目的。
我的问题是我应该使用同步套接字还是异步套接字来处理 IM 客户端。目标是处理尽可能多的客户。

我不太确定,但据我所知,使用异步套接字,数据包不会按顺序到达,这意味着当您发送 2 条聊天消息并且存在延迟/滞后时,第二条消息可能会在第一条消息之前到达。这是正确的,如果是这样,有没有办法解决这个问题?

关于同步套接字:同步套接字对许多客户端来说是一个很好的解决方案吗?如果有新数据包,我是否必须检查循环中的每个套接字/连接?如果是这样,这不是很慢吗?

最后一个问题:假设我想实现一种通过协议(protocol)发送文件(例如图像)的方法(顺便说一句,这是一个非标准的二进制协议(protocol)),我还能在上传时发送消息吗?

最佳答案



那么异步。它的规模要好得多。



TCP 保证一切都按顺序到达。



我建议您使用单独的连接进行文件传输。使用第一个连接进行握手(确定使用哪个端口并指定文件名等)。然后在新套接字上使用 Socket.SendFile 传输文件。

10-06 07:31
查看更多