windows SOCKET编程

来源:互联网 发布:淘宝开店认证无法认证 编辑:程序博客网 时间:2024/06/05 04:00

   在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);


0 0