我
我不自由
Unregistered / Unconfirmed
GUEST, unregistred user!
如果在无连结的情况下,采用异步方式接受数据,利用WSAAsyncSelect函数
获取网络数据的到达消息,如何可以做到不丢失数据。现在的情况,如果客户端
连续发送1000个数据包,服务端只能相应不到150个消息,而采用同步方式则一个包也不会丢:
如:
Rvalue:=1;
ioctlsocket(lsSocket,FIONBIO,Rvalue);
repeat
i:=recv(scoket,RecvBuf, sizeof(RecvBuf), 0);
if i<>socket_error then inc(j);
until j>=1000;
但是采用这种方式的话,cpu的负荷太重,不能够接受,有谁可以帮我想想办法
无论是降低cpu负荷也好,或者是减少丢包也好,我都给分
附:丢包原因局我分析,连续的数据因为发送的速度比较的快,很快就溢出接受缓冲区了
谁可以告诉我如何清除接受缓冲区呢,是不是使用recv就可以了呢
获取网络数据的到达消息,如何可以做到不丢失数据。现在的情况,如果客户端
连续发送1000个数据包,服务端只能相应不到150个消息,而采用同步方式则一个包也不会丢:
如:
Rvalue:=1;
ioctlsocket(lsSocket,FIONBIO,Rvalue);
repeat
i:=recv(scoket,RecvBuf, sizeof(RecvBuf), 0);
if i<>socket_error then inc(j);
until j>=1000;
但是采用这种方式的话,cpu的负荷太重,不能够接受,有谁可以帮我想想办法
无论是降低cpu负荷也好,或者是减少丢包也好,我都给分
附:丢包原因局我分析,连续的数据因为发送的速度比较的快,很快就溢出接受缓冲区了
谁可以告诉我如何清除接受缓冲区呢,是不是使用recv就可以了呢