在tcpip網路程式設計中,需要根據專案需要設定資訊。
1.設定為非阻塞模式,即想在listen,send,rev函式立即返回,而不是阻塞在那裡,在bind之前呼叫
unsigned long on_windows=1;
int iret = ioctlsocket(m_sock, fionbio, &on_windows);
if (iret != no_error) //shejn 2017/11/14 18:56:29 設定為非阻塞
2.設定傳送或接收延、緩衝區大小
int timeout = 5000; //設定傳送超時5秒
::setsockopt(m_sock,sol_socket,so_sndtimeo,(char *)&timeout,sizeof(timeout));
int sbuflen = 8192*4;
setsockopt(m_sock, sol_socket, so_sndbuf, (const char*)&sbuflen, sizeof(int)); //shejn 2017/11/14 18:35:30 設定傳送緩衝區大小
timeout = 2000; //設定接收超時2秒
::setsockopt(m_sock,sol_socket,so_rcvtimeo,(char *)&timeout,sizeof(timeout));
3.
如果要已經處於連線狀態的soket在呼叫closesocket後強制關閉,不經歷
time_wait的過程:
bool bdontlinger = false;
setsockopt(s,sol_socket,so_dontlinger,(const char*)&bdontlinger,sizeof(bool));
socket設定為非阻塞模式
於 1,套接字的預設狀態是阻塞的。即當發出乙個不能立即完成的套接字呼叫時,該程序將被投入睡眠,等待相應操作完成。2,阻塞的套接字分為下面四類 輸入操作 包括read recv recvfrom和recvmsg。輸出操作 包括write send sendto和sendmsg。接受外來連線,accep...
UDP socket 設定為的非阻塞模式
udp socket 設定為的非阻塞模式 len recvfrom socketfd,szrecvbuf,sizeof szrecvbuf msg dontwait,struct sockaddr sockaddr,scokaddrlen udp socket 設定為的阻塞模式 len recvfr...
unix linux socket設定非阻塞
uniix linux下socket主要是同步的,但有阻塞和非阻塞兩種方式。阻塞方式定義與前面定義相同,要解決阻塞有兩種方法 一種是設定socket屬性,設定為非阻塞 fcntl 函式 sockfd socket af inet,sock stream,0 fcntl sockfd,f setfl,...