我正在开发 MMO 游戏服务器。我必须了解 TCP 数据发送/接收操作(不是用法,详细信息)。我想问这个:如果我从.net socket客户端发送一个5kb的数据,服务器socket可以再处理一次这个数据发送操作吗?即 5kb 的数据是否可以再接收一个操作,如 5kb = 1. operation:2kb + 2. operation:3kb?
我想再说一遍;如果客户端向服务器发送了一个数据,我们的服务器监听器的 Recv() 方法是否可以再一次将该数据传递给我们的处理程序类(回调操作)?
您不能保证从Send()
单个Receive()
.
TCP 算法透明地将您的数据拆分为单独的数据包,并且没有直接的 API 控制数据包的大小,或者当数据对于单个数据包来说太大时如何拆分数据。有关TCP 如何在后台执行此操作的详细信息,请参阅Nagle 的算法。
如果您想控制确切的数据包内容和发送时间,您应该考虑使用基于数据包的协议UDP。