在WINDOWS的SOCKET編程中,可以設置SOCKET的發送和接收緩衝區大小爲1M,這樣可以大大提升局域網的數據傳輸速度,默認爲64K,最高可提高爲5M/S,
實際代碼如下:
// 指定發送緩衝區大小
int buf_size = dwMaxBufSize, buf_minsize = dwMaxBufSize / 2;
if (::setsockopt(s, SOL_SOCKET, SO_SNDBUF, (char *)&buf_size, sizeof(int)) != 0
&& ::setsockopt(s, SOL_SOCKET, SO_SNDBUF, (char *)&buf_minsize, sizeof(int)) != 0)
{
printf("setsockopt(sendbuf)\r\n");
return
S_FALSE;
}
// 接收確定緩衝區大小
buf_size = dwMaxBufSize, buf_minsize = dwMaxBufSize / 2;
if (::setsockopt(s, SOL_SOCKET, SO_RCVBUF, (char *)&buf_size, sizeof(int)) != 0
&& ::setsockopt(s, SOL_SOCKET, SO_RCVBUF, (char *)&buf_minsize, sizeof(int)) != 0)
{
printf("setsockopt(recvbuf)\r\n");
return
S_FALSE;
}
設置爲非阻塞模式。
m_hTCPSock = ::socket(AF_INET,SOCK_STREAM,0);
unsigned long val = 1;
int nRe = ioctlsocket(m_hTCPSock, FIONBIO, &val);
SetSockBufSize(m_hTCPSock,m_dwMaxSockBufSize);