recv接收数据不完整? 但wireshark抓包看到的数据是和服务端发出来的一致的
//客户端代码
//服务端输出
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,和服务端输出累加一致,不知道客户端为什么收不全?
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,和服务端输出累加一致,不知道客户端为什么收不全?
...全文
相关推荐
tcpdump抓包分析
tcpdump抓包分析,tcpdump抓包分析,tcpdump抓包分析,tcpdump抓包分析,tcpdump抓包分析,tcpdump抓包分析,tcpdump抓包分析,tcpdump抓包分析
wireshark实验抓包分析
wireshark实验抓包分析..........................................
apihook钩子 网络抓包,想知道是哪个进程发出来的这些数据
当你在网络上抓到一些数据包,想知道这些包是哪个进程发出来的时候,怎么办?这个小工具也许能帮一些忙。 这个工具采用的是HOOK进程的winsock API,把一些数据记录下来
计算机网络课程设计 WireShark网络抓包分析
计算机网络课程设计 WireShark 抓包分析
网络抓包程序
截获本地指定端口数据包,本程序是用VC做的Socket通信


网络编程

