socket 进入mlock.c _unlock
我在使用socket建立连接后不断对一个页面发包,然后接受数据。
由于接受的数据比较大,我分了好几次接收。
单步调试的时候,没有问题。
但是直接运行的时候,由于程序执行的速度很快,我必须在recv之后sleep(10); 才能接受数据。
但是即使这样,在接收数据的过程中,程序会异常终止,调试后进入mlock.c 停在_unlock里面出不来。
不知道是为什么?还请大家指教。谢谢。
[解决办法]
recv本身是阻塞模式的,这部分可以这样写:
int nRecvLen = 0;
while ( nRecvLen < Length ) {
int len = recv(LinkSocket, WriteBuffer + nRecvLen, 1024, 0);
if ( len == 0 )
break;
nRecvLen += len;
}
WriteFile(hPhoto, WriteBuffer, nRecvLen, &dwWritten, NULL);
CloseHandle(hPhoto);