socket connect 函式設定超時

2021-08-15 13:18:25 字數 833 閱讀 4444

眾所周知,在進行網路程式設計的時候,如果使用系統connect函式,無法設定超時,而在連線乙個不存在的主機時,將會一直阻塞。

其實在呼叫connect函式時,將控制代碼設定為非阻塞,然後呼叫select函式,可以達到設定超時的效果。

[cpp]

view plain

copy

bool

connect(

char

*host,

intport, 

inttimeout)  

if(connect(sock,(

struct

sockaddr *)&address,

sizeof

(address))==

false

)       

// restart the socket mode

imode = 0;  

iresult = ioctlsocket(sock, fionbio, &imode);  

if(iresult != no_error)  

fd_set write, err;  

fd_zero(&write);  

fd_zero(&err);  

fd_set(sock, &write);  

fd_set(sock, &err);  

// check if the socket is ready

select(0,null,&write,&err,&timeout);  

if(fd_isset(sock, &write))  

return

false

;  }  

socket connect 函式設定超時

眾所周知,在進行網路程式設計的時候,如果使用系統connect函式,無法設定超時,而在連線乙個不存在的主機時,將會一直阻塞。其實在呼叫connect函式時,將控制代碼設定為非阻塞,然後呼叫select函式,可以達到設定超時的效果。cpp view plain copy print?bool conn...

socket connect函式理解

1 connect描述 定義函式 int connect int sockfd,struct sockaddr serv addr,int addrlen connect函式通常用於客戶端建立tcp連線。返回值 成功則返回0,失敗返回 1,錯誤原因存於errno中。錯誤 ebadf 引數sockfd...

socket connect函式理解

1 connect描述 定義函式 int connect int sockfd,struct sockaddr serv addr,int addrlen connect函式通常用於客戶端建立tcp連線。引數 sockfd 標識乙個套接字。serv addr 套接字s想要連線的主機位址和埠號。add...