客户端如何才能知道服务器端的数据已经发送完毕了?
阻塞式的socket,我怎么才能知道服务器端的数据已经发送完毕了?
比方说服务器发送了1MB的数据过来。
我的客户端的buffer只有10K。
这种情况的程序应该怎么写呢?
char buffer[10240];
do {
iRead = recv(m_client,buffer,10240,0);
fwrite( buffer, 1, iRead, fp );
}while( iRead == 10240 );
这样写可以吗?
如果服务器端发送16K的数据,是不是一定先收到10K再收到6K,有没有可能先收到9K再收到7K呢?如果有可能的话,我上面的写法就应该有问题了。
如果服务器端发送的数据跟我的buffer大小刚好一样,也就是说,我第一次把数据都收下来了,然后再调用recv的话,程序就阻塞了。这个应该怎么办啊?