Tcp設定傳送和接收超時

2021-07-09 15:40:50 字數 759 閱讀 1120

linux和windows下用setsockopt設定so_sndtimeo,so_rcvtimeo的引數的一點區別  

udp的socket在某些情況:如對方關閉時,本地可能sendto不出去資料,然後recvfrom就會被阻塞,這時就需要設定 這兩個引數的值提高程式質量。

linux:

struct timeval timeout=;//3s

int ret=setsockopt(sock_fd,sol_socket,so_sndtimeo,(const char*)&timeout,sizeof(timeout));

int ret=setsockopt(sock_fd,sol_socket,so_rcvtimeo,(const char*)&timeout,sizeof(timeout));

如果ret==0 則為成功,-1為失敗,這時可以檢視errno來判斷失敗原因

int recvd=recv(sock_fd,buf,1024,0);

if(recvd==-1&&errno==eagain)

windows:

int timeout = 3000; //3s

int ret=setsockopt(sock_fd,sol_socket,so_sndtimeo,&timeout,sizeof(timeout));

int ret=setsockopt(sock_fd,sol_socket,so_rcvtimeo,&timeout,sizeof(timeout));

而solaris,則不支援。

CXF傳送 接收訊息超時設定

在使用webservice時,我們通常都會在客戶端中設定請求超時的限制,以避免長時間的去連線不可用的伺服器。在cxf的環境下,客戶端可通過兩個屬性配置超時限制 http.setclient httpclientpolicy spring cxf配置方式 這裡需要注意的有幾個地方 1 需要指定http...

winsock程式設計如何設定傳送與接收超時引數?

在tcp通訊中,為了防止阻塞式呼叫send函式與recv函式時程式在這兩個函式處等待過久甚至一直等待,我們需要設定send函式與recv函式的超時時間長度。要達到這個目的,在winsock程式設計中,我們呼叫setsockopt來完成這個任務。int setsockopt sockets,intle...

基於TCP協議的傳送和接收端

基於tcp協議的傳送和接收端 tcp協議的接收端 using system.sockets 使用到tcplisten類 using system.threading 使用到執行緒 using system.io 使用到streamreader類 int port 8000 定義偵聽埠號 privat...