成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

socket和accept返回的套接字(fd)有什么區(qū)別

alexnevsky / 4299人閱讀

摘要:定義返回出錯(cuò)成功套接口描述字套接字我在哪個(gè)端口功能給套接口分配一個(gè)本地協(xié)議地址。服務(wù)端的產(chǎn)生的套接字只是用來(lái)監(jiān)聽(tīng)的,不能直接用于發(fā)送接收數(shù)據(jù)。

記錄unix網(wǎng)絡(luò)編程的復(fù)習(xí)之路 簡(jiǎn)單回顧下socket連接過(guò)程

socket() --得到fd!

 功能:指定了協(xié)議族(IPv4、IPv6或unix)和套接口類(lèi)型(字節(jié)流、數(shù)據(jù)報(bào)或原始套接口)。但并沒(méi)有指定本地協(xié)議地址或遠(yuǎn)程協(xié)議地址。
 定義:int socket(int family, int type, int protocol);
 返回:出錯(cuò):-1
        成功:套接口描述字 (socket file descriptor)(套接字)sockfd

bind() --我在哪個(gè)端口?

 功能:給套接口分配一個(gè)本地協(xié)議地址。
 定義:int bind(int sockfd, const struct sockaddr *my_addr, int addrlen);

connect() --Hello!

 功能:建立與TCP服務(wù)器的連接
 定義:int connect(int sockfd, struct sockaddr *serv_addr, int addrlen);

listen() --有人給我打電話(huà)嗎?

 功能:將未連接主動(dòng)套接口的轉(zhuǎn)換為被動(dòng)套接口,指示內(nèi)核接受對(duì)該套接口的連接請(qǐng)求。
 定義:int listen(int sockfd, int backlog);
 參數(shù):
     - sockfd調(diào)用socket函數(shù)返回的文件描述符(套接字).
     - 未完成連接隊(duì)列和已完成連接隊(duì)列的上限.
        - 未完成連接隊(duì)列 : 服務(wù)端還未完成三次握手全部過(guò)程的一個(gè)隊(duì)列.
        - 已完成連接隊(duì)列 : 服務(wù)端已經(jīng)完成三次握手全部過(guò)程的一個(gè)隊(duì)列, 等待accept函數(shù)從這個(gè)隊(duì)列中返回下一個(gè)(返回其實(shí)是取出, 該套接字不在已完成隊(duì)列中了)套接字.

accept() --"Thank you for calling port 3490."

 功能:accept函數(shù)從listen的已完成連接隊(duì)列中返回下一個(gè)已完成連接, 也就是對(duì)端的套接字, 一個(gè)新的套接字. 當(dāng)已完成連接隊(duì)列的下一個(gè)完成 
      連接是空, 那么accept函數(shù)將被阻塞.
 定義:int accept(int sockfd, struct sockaddr *cliaddr, int* addrlen);
 返回:調(diào)用成功時(shí)返回: 1. cliaddr: 客戶(hù)進(jìn)程的協(xié)議地址和地址大小 2. 新套接口描述字

send() 和 recv() --Talk to me, baby!

close() --滾開(kāi)!


socket()和accept()返回的fd 舉個(gè)栗子:
一個(gè)客戶(hù)端和一個(gè)服務(wù)端連接,雙方socket產(chǎn)生各自的c_sock_fd和s_sock_fd;
s_sock_fd進(jìn)行bind和listen后,accept準(zhǔn)備接受客戶(hù)端的連接請(qǐng)求;c_sock_fd調(diào)用connect請(qǐng)求連接服務(wù)端;
服務(wù)端接到請(qǐng)求產(chǎn)生accept_fd,屆時(shí)accept_fd和c_sock_fd兩個(gè)套接字可以通訊,而s_sock_fd則可以關(guān)閉;
客戶(hù)端關(guān)閉close(c_sock_fd)后,服務(wù)端關(guān)閉所有未關(guān)閉的fd,通訊徹底斷開(kāi)。
ps:服務(wù)端的socket產(chǎn)生的套接字只是用來(lái)監(jiān)聽(tīng)的,不能直接用于發(fā)送接收數(shù)據(jù)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/44030.html

相關(guān)文章

  • nodejs cluster模塊分析

    摘要:而在進(jìn)程執(zhí)行把進(jìn)程添加到調(diào)度器中時(shí)添加了一個(gè)回調(diào)函數(shù),回調(diào)函數(shù)了一個(gè)帶的消息,并且為,就是這個(gè)消息觸發(fā)了發(fā)送的函數(shù)的執(zhí)行。 最近做了點(diǎn)nodejs項(xiàng)目,對(duì)nodejs的cluster怎么利用多進(jìn)程處理請(qǐng)求產(chǎn)生了疑問(wèn),于是著手進(jìn)行了研究,之后發(fā)現(xiàn)這其中竟大有文章!一切還是先從遙遠(yuǎn)的TCP說(shuō)起吧。。。 TCP與Socket 說(shuō)到TCP,相信很多人都相當(dāng)了解了,大學(xué)已經(jīng)教過(guò),但是又相信有很多...

    KnewOne 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<