WinSock send()连续发送小的数据,不希望接收端一起接收怎么办? 用send()发送数据,由于程序需要连着发送两次不同的小的数据,在接收端却两个数据一起接收了,但我想让它们被分开接收,好处理不同的情况。这个该怎么办啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的做法是中间加一句Sleep(20)就可以了 可以使用TCP_NODELAY选项关闭Nagle算法根本上还是需要加上包头控制信息(包长,包类型)+包体(传送内容)来解决,然后进行 拆包和组包 很容易的说,像telnet,ftp协议等都是发送字符串的,但是他们如何确保接收到的不是两个命令合并到一起的呢?比如ftp的两条指令:USER xx\r\nABOR\r\n接收方就是一个字符一个字符的接收,每接收到一个就判断是不是\n?之前的是不是\r?根据\r\n来停止接收,执行完操作后再重复上面的接收步骤。这就是最基本的应用层协议,你也可以每发送一个字符串的时候先发送一个long值表示后面的字符串的长度,接收者则先接收4字节,即一个long值,然后判断后面有多少字符,然后在循环里直到接收到刚刚好的长度后才退出。 还是定义一个包格式吧,比如包类型+包长+pdu(数据体),这也是一些应用层协议通常使用的手法,这样即使连续接受数据,也可以很容易地分开处理。如果采用sleep方式,效率是不是会太低? 异步类CAsyncSocket里面 的回调函数onReceive不是接受到一个字符串就调用一次的吗?我想利用这个来处理两个消息接受成一个的问题,结果发现不行。 Unicode字符串转化成汉字 如何激活一个挂起CWinThread对象 如何确保某段代码在程序里只运行一次? VC++中如何解决图形错位问题 WindowsMediaPlayer9.0控件的问题 SelectStockObject是什么意思啊?准确的中文含义! 请问SDK的运行环境是什么? 请common_man近来领分,非常感谢他帮我解决了图形编程中的难题 StretchBlt出来的图象怎么是反的啊 紧急问题 网关应答模拟 各位大哥帮帮忙啊!!小弟的毕业设计 如何能够快速的切换屏幕的分辨率
比如ftp的两条指令:
USER xx\r\n
ABOR\r\n接收方就是一个字符一个字符的接收,每接收到一个就判断是不是\n?之前的是不是\r?
根据\r\n来停止接收,执行完操作后再重复上面的接收步骤。这就是最基本的应用层协议,你也可以每发送一个字符串的时候先发送一个long值表示后面的字符串的长度,接收者则先接收4字节,即一个long值,然后判断后面有多少字符,然后在循环里直到接收到刚刚好的长度后才退出。
我想利用这个来处理两个消息接受成一个的问题,结果发现不行。