亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

TCP/IP 三次握手后該怎么去理解read和write函數中的參數?

TCP/IP 三次握手后該怎么去理解read和write函數中的參數?

溫溫醬 2019-01-29 19:07:37
TCP/IP 三次握手后該怎么去理解read和write函數中的參數?
查看完整描述

2 回答

?
慕尼黑5688855

TA貢獻1848條經驗 獲得超2個贊

  1. 描述符都是本地的概念,它的值只是內核文件系統中對socket/sock數據結構的一個"別稱"而已。創建socket時,內核創建socket/sock數據結構,并返回給你一個fd。以后你用這個fd進行 send或者recv,內核才能找到時哪個socket。


(個人感覺這里的cfd是否就可以理解是保存了客戶端的地址信息,相當于客戶端的套接字?)也就是說這里讀寫時使用的是對方的套接字進行讀寫的?

cfd是屬于Server的套接字描述符,只是它對應的套接字保存了通信雙方的信息,只能說是連接到client的套接字

客戶端如果沒有給套接字使用bind,操作系統會自動分配地址信息綁定到這個套接字上,那就說明客戶端中的fd依然是客戶端自身的套接字?

Bind 就是手動指定為一個套接字指定本端地址信息(比如IP和port)。一般Clinet不關心自己使用的端口號,所以一般Clinet不用Bind,實在要Bind也沒啥問題,只要不要和已有的沖突就行。

另外,關于

在服務端編程時,會創建兩個文件描述符sfd和cfd,其中sfd用來綁定服務端的地址信息,后面調用accept的時候,使用的實參是sfd,返回給了cfd

sfd是監聽(listen)套接字,accept返回的cfd是子連接,本端信息繼承sfd,對端信息來源于對端的SYN報文


查看完整回答
反對 回復 2019-03-13
  • 2 回答
  • 0 關注
  • 649 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號