windows SOCKET編程

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章