急,,在线等待,,,小问题,,Socket.SendBuf/Socket.ReceiveBuf一次最大能发送/接收多少字节???(100分)

  • 主题发起人 主题发起人 baifeng
  • 开始时间 开始时间
如果要求SendBuf一次发送10000字节,,

但是超出了sendbuf一次发送字节数据的限度,

那么ClientSocket/ServerSocket是怎么处理的?

还是要靠自己判断sendbuf方法返回的字节数,再来做处理呢?
 
winsock默认的系统缓冲是8k,如果对方发给你的数据超过8k而你还没recv完,有可能造成数据丢失
,解决的办法是用winsock api扩大系统默认缓冲,比如你是用Delphi 的TSocketServer控件,你可以
在OnClientconnect的时候加下面的代码,改变系统默认缓冲

iRecvBufLen := 64 * 1024; //64k
setsockopt(Socket.SocketHandle, SOL_SOCKET, SO_RCVBUF, @iRecvBufLen, sizeof(iRecvBufLen));

见http://www.delphibbs.com/delphibbs/dispq.asp?lid=1178436
 
后退
顶部