怎样判断一个SOCKET已经收完了所有数据? send(socket,buffer,len,0);如果数据很多,有可能被自动分成多块来发送要怎么才知道,已经完成了呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 无解,tcp数据本来就是流式的,没有所谓的开始结束除非你靠自定义协议来指定本次需要接收多少数据,然后就可以在收到那么多数据后就认为已经收完了 如果buffer len数据较长,循环发送int slen = 0;int ret = 0;while((len-slen)>0){ ret = send(socket,buffer + slen,len-slen,0); if(ret > 0) { slen += ret; } else break;} 建议你这样:1、接收socket发送请求(使用阻塞socket)2、发送socket应答返回数据给接收socket 依次循环1、2 保证顺序和数据完整 根据长度,循环接收,注意recv的返回值 socket是不知道的,要你告诉他。你自己定义一个协议吧。 循环读取,如果流里已经没有数据了,recv方法会返回0 问个关于D3D11CreateDeviceAndSwapChain的问题 修改目录、文件的所有者 对话框程序中,如何使用正则表达式? 从一个字符串,例如:abc12345asdfcadbc中找出出现频率最高的字母,最优算法是什么?谢谢! 求助:SetTimer定时器问题 请教一个关于硬盘分区容量的问题 如何实现自启动的服务程序? 为什么文件无法删除? MultiByte转UTF8的函数,汉字全变为问号 SetWindowsHookEx函数一直返回NULL,新手 请帮忙解决 第十四章:请多一点 多视图的打印问题
int slen = 0;
int ret = 0;
while((len-slen)>0)
{
ret = send(socket,buffer + slen,len-slen,0);
if(ret > 0)
{
slen += ret;
}
else
break;
}
依次循环1、2 保证顺序和数据完整