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

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

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

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

慕工程0101907 2019-04-27 22:20:01
初學網絡編程,自己寫服務端和客戶端簡單的socket通信時,遇到了一個問題比較迷惑:在服務端編程時,會創建兩個文件描述符sfd和cfd,其中sfd用來綁定服務端的地址信息,后面調用accept的時候,使用的實參是sfd,返回給了cfd,最終用read和write函數的時候,都是通過cfd來進行讀寫的,(個人感覺這里的cfd是否就可以理解是保存了客戶端的地址信息,相當于客戶端的套接字?)也就是說這里讀寫時使用的是對方的套接字進行讀寫的?然后到了客戶端編程時,只創建了一個文件描述符fd,然后后面使用connect函數時,實參使用的也是這個fd,而后面使用read和write時,也是通過fd來進行讀寫的。但是我從一些資料上看到,客戶端如果沒有給套接字使用bind,操作系統會自動分配地址信息綁定到這個套接字上,那就說明客戶端中的fd依然是客戶端自身的套接字?這樣我就覺得很奇怪了:為什么在服務端read和write是用的對方的套接字,而客戶端read和write時是用的自己的套接字呢?既然都用的是相同的函數,那這樣不就矛盾了嗎?請問我是哪里理解錯了呢?(另外,個人對于套接字的理解是:套接字實際上就是將一個進程的地址信息(包括ip、端口等)具體化,來使得進程成為一個可連接對象,不知道這樣的理解是否有誤?)十分感謝?。?!
查看完整描述

2 回答

?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

fd,文件描述符,相當于指針。根據fd可以找到socket綁定的信息。問題的關鍵是,服務端用自己的套接字是沒有綁定客戶端的信息的,它不知道要發送到哪。
                            
查看完整回答
反對 回復 2019-04-27
  • 2 回答
  • 0 關注
  • 360 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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