2010-03-17 27 views
1

我剛剛回答了problem with sockets in c#在我的示例代碼中,我使用ProtocolType.IP初始化我的套接字,因爲這是我一直在我自己的代碼中使用的,它從來沒有給我造成了問題。但我看到很多指定ProtocolType.Tcp的例子。使用ProtocolType.IP和ProtocolType.Tcp之間的區別是什麼

我想,我問的是,通過使用ProtocolType.IP而不是ProtocolType.Tcp是什麼東西在引擎蓋下有不同的表現,我應該知道嗎?

回答

1

我猜想,ProtocolType.IP打開「raw IP」插座,換句話說,它只是鞘到原始字節網絡作爲IP數據包,而不是通過TCP或UDP協議層。

與TCP相比,您不會得到有保證的數據包傳送,數據包可能按順序到達和/或數據包可能被複制。 TCP將所有這些作爲協議的一部分來處理。

對於幾乎所有的目的,我希望你應該使用ProtocolType.TcpProtocolType.Udp,除非你正在做一些低級網絡的東西寫你自己的傳輸協議。

+1

事實上,如果我沒有使用流作爲我的套接字類型的話。 IP和Stream將始終是TCP/IP,因爲流套接字需要TCP。至少根據我對WinSock2文檔的理解。但是,如果我使用了其他流式行爲以外的其他內容,或者由於錯誤的組合而導致流量下降。 – Sekhat 2010-03-18 12:08:08

0

檢查此鏈接:http://www.allinterview.com/showanswers/1447.html

TCP/IP是一個協議族,意味着它 是 涉及TCP和IP協議的組合。 TCP是傳輸層協議,而IP是 網絡層協議。 TCP是一個 面向連接的協議,IP是 一個連接協議

希望它可以幫助

相關問題