当前位置: 技术问答>linux和unix
请教一个socket编程问题,急!
来源: 互联网 发布时间:2015-08-11
本文导语: 在接收数据时,循环调用如 i = recv(SocketHandle, RecvCache, 8192, 0)来接收数据,那么怎样才能知道我需要的数据正好接收完毕呢? 我想如果返回的i不等于8192的话,可以认为我需要的数据接收完毕了,或者发生了...
在接收数据时,循环调用如 i = recv(SocketHandle, RecvCache, 8192, 0)来接收数据,那么怎样才能知道我需要的数据正好接收完毕呢?
我想如果返回的i不等于8192的话,可以认为我需要的数据接收完毕了,或者发生了错误,但是,如果我发送的数据正好时8192个呢?这时候我怎么确定数据接收完毕了?如果再调用一次recv,会不会阻塞呢?请大家指教。
我想如果返回的i不等于8192的话,可以认为我需要的数据接收完毕了,或者发生了错误,但是,如果我发送的数据正好时8192个呢?这时候我怎么确定数据接收完毕了?如果再调用一次recv,会不会阻塞呢?请大家指教。
|
在接收数据时,循环调用如 i = recv(SocketHandle, RecvCache, 8192, 0)来接收数据,那么怎样才能知道我需要的数据正好接收完毕呢?
*****无法知道数据是否接收完毕,需要在发送之前告诉对方要发送多少字节。*****
我想如果返回的i不等于8192的话,可以认为我需要的数据接收完毕了,或者发生了错误,
*****发送8192字节数据,接收方可能分几次收到,所以这个说法也不成立*****
但是,如果我发送的数据正好时8192个呢?
*****这个问题如前所说*****
这时候我怎么确定数据接收完毕了?如果再调用一次recv,会不会阻塞呢?请大家指教。
*****调用recv时,如果没有数据发送过来,就一直阻塞*****
*****无法知道数据是否接收完毕,需要在发送之前告诉对方要发送多少字节。*****
我想如果返回的i不等于8192的话,可以认为我需要的数据接收完毕了,或者发生了错误,
*****发送8192字节数据,接收方可能分几次收到,所以这个说法也不成立*****
但是,如果我发送的数据正好时8192个呢?
*****这个问题如前所说*****
这时候我怎么确定数据接收完毕了?如果再调用一次recv,会不会阻塞呢?请大家指教。
*****调用recv时,如果没有数据发送过来,就一直阻塞*****