2014-03-13 157 views
0

來源:http://beej.us/guide/bgnet/output/html/singlepage/bgnet.html套接字描述符基本上是文件描述符的同義詞嗎?

所以,當你想在互聯網上 你要做到這一點通過文件描述符與其它程序通信,你最好相信它。

「?我在哪裏得到這個文件描述了網絡通信,先生 Smarty的褲」可能是您的想法最後一個問題,現在, 但我還是要去回答它:您撥打電話到套接字() 系統例程。它返回套接字描述符,並使用專門的send()和recv()(man send,man recv)套接字調用通過它傳遞 。 「但是,嘿!」你現在可能會大聲說出 。 「如果它是一個文件描述符,爲什麼以海王星的名義不能我 只使用正常的read()和write()調用通過 來溝通socket?」簡短的回答是,「你可以!」更長的答案是, 「你能,但發送()和recv()提供了更大的控制權在你的 數據傳輸。」

因爲,插座是UNIX不同進程之間的通信的一種方式,

UNIX中不同進程之間的所有通信都通過讀取和寫入文件來完成,

文件描述符是一個整數,它唯一地表示操作系統中的打開文件。

那麼,套接字描述符基本上是一個文件描述符?
OR是套接字描述符,基本上是兩個程序之間建立鏈接的唯一標識符?

這兩者之間有什麼區別?

回答

2

這裏有幾個問題,但所有這些問題的答案都是一樣的。在Unix,Linux等上,套接字描述符的文件描述符。這是爲什麼你可以使用read()和write()和close()。

在Windows上,它不是,你不能。

+0

感激。那麼請解釋一下在Windows上它是什麼。 –

+1

它只是一個套接字描述符,由WINSOCK分配,並且在WINSOCK API之外沒有其他用途。 – EJP