周江涛 2015年07月20日
recv接收数据不完整? 但wireshark抓包看到的数据是和服务端发出来的一致的
//客户端代码

DWORD WINAPI TcpRecvProc(void *pVoid)
{
struct timeval tv = {0, 300*1000};
fd_set rfds;
char *buf = new char[MAX_VIDEO_FRAME_LEN];

int cnt=0;
while (g_RunThread)
{
FD_ZERO(&rfds);
FD_SET(g_fd, &rfds);

int ret = select((int)g_fd+1, &rfds, NULL, NULL, &tv);
if (GetLastError()!=0)
TRACE("GetLastError=%d\n", GetLastError()); //未输出错误
if (ret<0)
Sleep(100);
else if (ret==0)
Sleep(100);
else
{
int n = recv(g_fd, buf, MAX_VIDEO_FRAME_LEN/4, 0);
if (n<=0)
{
if (GetLastError()!=0)
TRACE("GetLastError=%d\n", GetLastError());//未输出错误
continue;
}
cnt+=n;
TRACE("%d\n", cnt);

//一些业务处理代码 ...
}
}

//服务端输出
write errno=104, n=147533, fd=9, cmd=80,subcmd=80
write errno=104, n=116775, fd=9, cmd=80,subcmd=80
write errno=104, n=138693, fd=9, cmd=80,subcmd=80
write errno=104, n=144560, fd=9, cmd=80,subcmd=80
write errno=104, n=130876, fd=9, cmd=80,subcmd=80
write errno=104, n=126041, fd=9, cmd=80,subcmd=80
write errno=104, n=54170, fd=9, cmd=80,subcmd=80
write errno=104, n=21303, fd=9, cmd=80,subcmd=80
write errno=104, n=12842, fd=9, cmd=80,subcmd=80
write errno=104, n=11703, fd=9, cmd=80,subcmd=80
//wireshark的FollowTcpStream显示Entire conversation 904496,和服务端输出累加一致,不知道客户端为什么收不全?
...全文
615 点赞 收藏 7
写回复
7 条回复

还没有回复,快来抢沙发~

发动态
发帖子
网络编程
创建于2007-09-28

7878

社区成员

6.4w+

社区内容

VC/MFC 网络编程
社区公告
暂无公告