假如一个客户端Client,一个服务端Server,如果Client调用了两次的Send()也就是发送了两份数据,之后
服务端接受数据Recv,它会把两次的数据都一次接受么?如果是这样我想一次一次的接受这怎么实现?在一端如果有数据发送来会发送通知消息,这个通知消息是何时发送的,是等到数据全都接受到接受
端的接受缓冲区时才发送,还是没把数据放在接受端的接受缓冲区的时发送?
服务端接受数据Recv,它会把两次的数据都一次接受么?如果是这样我想一次一次的接受这怎么实现?在一端如果有数据发送来会发送通知消息,这个通知消息是何时发送的,是等到数据全都接受到接受
端的接受缓冲区时才发送,还是没把数据放在接受端的接受缓冲区的时发送?
解决方案 »
- 关于可用分和技术分
- 想用MFC和OPENGL做一个控件,请给点指点?
- 500分:求vfw压缩、解压缩视频源码,或帮助,绝不食言!顶者有分 !
- 请教高手:ADO连接数量有限制???????(至急)
- 如何调用同一个头文件的函数?
- 键盘钩子中回调函数的参数的疑问
- 请问 MFC 自己生成的toolbar上可以加上由Button 控制读输入的 input box 吗?
- 〉〉如果我自己不写拷贝构造函数,编译器将为我创建。那么CStringArray是怎样却掉拷贝构造函数的呢??
- VC++中如何读取并比较SQL server数据库中一个表的某行记录
- release版本为什么总是出错?
- 以太网性能测试的程序,应该在哪一层编写?
- 问下如何动态创建一个对话框,而又不需要在资源编辑器中添加dialog资源?
send()函数马上数据就发送出去了的,
如果send()函数只是把数据拷贝到发送缓冲区,并不是马上发送出去吧,如果时马上发送出去要缓冲区不就是没用了。
每个包头都放一个长度
每次先收长度,然后循环收这个长度
这个是可控的,你如若想每次都有数据就发送的话,你可以用setsockopt设置发送缓冲为空
1 发送端需要等缓冲区满才发送出去,造成粘包
2 接收方不及时接收缓冲区的包,造成多个包接收以上这些话是我从网上看见的,有点不理解:
1.UDP为什么不会出现粘包
2.默认的缓冲区是8K,我发送一段文字“Hello World”,接收方就能收到了,说明缓冲区没慢也发送出去了啊,这怎么理解。