socket connect 函式設定超時

2021-06-10 01:49:47 字數 794 閱讀 2936

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

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

[cpp]view plain

copy

print?

bool connect(char *host,int port, int timeout)

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函式理解

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...

socket connect 函式設定超時

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