T
tangyan
Unregistered / Unconfirmed
GUEST, unregistred user!
我第一次用api写一个文件传输,用的是阻塞方式,客户端用户一个线程循环发送,服务端用一个线程循环接收,正常情况下没有问题,但是当我在传输过程中,拔掉客户端网线时,发现服务端线程死了,
我调试发现是 recv(Mysocket, Data, MaxSendBlock, 0) ,阻塞了操作,一直没有返回,难道说客户端已经断开或发生错误了,服务端都不知道吗?我的接收程序如下:
li_RecSize:=1;
while (li_RecSize>0) do
begin
li_RecSize:=recv(Mysocket, Data, MaxSendBlock, 0);
if (li_RecSize = SOCKET_ERROR) or (I <= 0) then
break;
end
当客户端出现网络问题时,服务端要怎样才能退出recv操作呢???
我调试发现是 recv(Mysocket, Data, MaxSendBlock, 0) ,阻塞了操作,一直没有返回,难道说客户端已经断开或发生错误了,服务端都不知道吗?我的接收程序如下:
li_RecSize:=1;
while (li_RecSize>0) do
begin
li_RecSize:=recv(Mysocket, Data, MaxSendBlock, 0);
if (li_RecSize = SOCKET_ERROR) or (I <= 0) then
break;
end
当客户端出现网络问题时,服务端要怎样才能退出recv操作呢???