国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

socket設置超時的幾種方法

2019-11-08 01:49:11
字體:
來源:轉載
供稿:網友

1.建立socket2.將該socket設置為非阻塞模式3.調用connect()4.使用select()檢查該socket描述符是否可寫(注意,是可寫)5.根據select()返回的結果判斷connect()結果6.將socket設置為阻塞模式(如果你的程序不需要用阻塞模式的,這步就省了,一般情況下都是用阻塞模式的)

#include #include #define TIME_OUT_TIME 20 //connect超時時間20秒int main(int argc , char **argv){………………int sockfd = socket(AF_INET, SOCK_STREAM, 0);if(sockfd < 0) exit(1);struct sockaddr_in serv_addr;………//以服務器地址填充結構serv_addrint error=-1, len;len = sizeof(int);timeval tm;fd_set set;unsigned long ul = 1;ioctl(sockfd, FIONBIO, &ul); //設置為非阻塞模式bool ret = false;if( connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) ==  -1){tm.tv_set = TIME_OUT_TIME;tm.tv_uset = 0;FD_ZERO(&set);FD_SET(sockfd, &set);if( select(sockfd+1, NULL, &set, NULL, &tm) > 0){getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &error, (socklen_t *)&len);if(error == 0) ret = true;else ret = false;} else ret = false;}else ret = true;ul = 0;ioctl(sockfd, FIONBIO, &ul); //設置為阻塞模式if(!ret){close( sockfd );fPRintf(stderr , "Cannot Connect the server!n");return;}fprintf( stderr , "Connected!n");//下面還可以進行發包收包操作

}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乳山市| 都安| 漳浦县| 阳谷县| 黄平县| 婺源县| 当涂县| 化隆| 邹城市| 砀山县| 庄河市| 长沙县| 富川| 会东县| 舞阳县| 巩义市| 遂溪县| 班戈县| 都安| 东方市| 株洲市| 达尔| 公安县| 巴林左旗| 馆陶县| 崇仁县| 疏附县| 武川县| 双鸭山市| 资源县| 贺州市| 丹寨县| 武汉市| 沙坪坝区| 理塘县| 民县| 康定县| 怀远县| 图们市| 淄博市| 当阳市|