C#:关于套接字编程的问题(同步或异步)

Eli*_*sdx 4 c# sockets asynchronous

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

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

关于同步套接字:同步套接字是否适用于许多客户端?如果有新数据包,是否必须检查循环中的每个套接字/连接?如果是这样,这不是很慢吗?

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

jga*_*fin 8

目标是尽可能多地处理客户.

然后异步.它扩展得更好.

我不太确定但据我所知,对于异步套接字,数据包没有按顺序到达,这意味着当您发送2条聊天消息并且存在延迟/延迟时,第二条消息可能在第一条消息之前到达.

TCP保证一切按顺序到达.

假设我想实现一种通过协议(非标准二进制协议btw)发送文件(例如图像)的方法,我还可以在上传时发送消息

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