我知道套接字在網絡程序中被廣泛使用,我可以用它編寫代碼。但我不明白一些事情:什麼是套接字的定義,爲什麼需要它以及它是如何工作的?
1.爲什麼我們需要插座?
如果它被網絡層用來區分應用層程序,爲什麼不使用appliation名稱或其他uniqueue屬性?
套接字是標準嗎?
套接字只是在Linux或其他操作系統的結構?
2.套接字如何工作?
圍繞套接字有很多功能,例如bind,accept,listen,send等。例如,send()通過TCP發送msg給dest,以及它如何發送msg給網絡層?它發送消息到TCP緩衝區嗎?網絡層進程如何讀取tcp緩衝區數據以及如何將數據發送到較低層進程?
如果我使用send(int sockfd, const void *buf, size_t len, int flags)
函數,第一個參數'sockfd'是一個未定義的套接字,比如隨機int,結果會導致什麼結果?爲什麼?什麼是os進程?
這對SO來說太寬泛了。我建議你閱讀「Unix網絡編程」這本書,它很好地解釋了它。 – Barmar
你爲什麼試圖將所有關於套接字的問題都塞進這個問題?此外,這些問題並不表示出誠意的嘗試,以便您首先回答自己的問題。 – jxh