linux網(wǎng)絡(luò)編程常用函數(shù)說(shuō)明
connect函數(shù)
int connect (int sockfd,struct sockaddr * serv_addr,int addrlen);
(1)connect之前調(diào)用bind不是必須的,內(nèi)核會(huì)分配ip以及臨時(shí)port;
(2)connect調(diào)用后,會(huì)發(fā)送SYN分節(jié),如果沒(méi)有收到SYN-ACK分節(jié),則返回ETIMEOUT;
底層細(xì)節(jié)說(shuō)明:發(fā)送SYN,6s后未收到SYN-ACK,則再發(fā)送一個(gè)SYN,24s后未收到SYN-ACK,則再發(fā)一個(gè)SYN。共等待75s后仍未收到響應(yīng),則ETIMEOUT;(如connect一個(gè)子網(wǎng)內(nèi)未分配的ip)
對(duì)工程的啟示:阻塞connect,在后端掛掉的情況下,75s才返回,這個(gè)過(guò)程中,有可能阻塞所有工作線程或IO線程;
(3)connect調(diào)用后,如果得到的響應(yīng)是RST,則
熱門(mén)工具 換一換
