【发布时间】:2010-05-06 09:09:47
【问题描述】:
我正在编写一个同时具有服务器端和客户端的程序,并且客户端将连接到由同一程序托管的服务器(但通过它的另一个实例,通常在另一台机器上)。所以基本上,我可以控制协议的两个方面。
我在两边都使用BeginReceive()和BeginSend()来发送和接收数据。我的问题是这两个陈述是否属实:
使用对 BeginReceive() 的调用将为我提供在调用回调函数时在另一端通过对 BeginSend() 的单个调用发送的全部数据。
使用对 BeginSend() 的调用会将我传递给另一端的全部数据发送到另一端,而另一端对 BeginReceive() 的单个调用将接收到所有数据。
两者其实基本相同。
如果答案是否定的,根据我所阅读的有关套接字的内容,我猜测是这种情况,那么处理命令的最佳方式是什么?我正在编写一个游戏,它将具有诸如PUT X Y 之类的命令。我正在考虑在每个命令的末尾附加一个特殊字符(例如#),并且每次收到数据时,我都会将其附加到缓冲区中,然后仅在遇到# 后才对其进行解析。
【问题讨论】:
标签: c# .net sockets asynchronous