2010-08-03 122 views
1

我是網絡相關方面的新手。我如果兩臺PC上運行的客戶端和服務器(即通過異步通信。套接字)之間的網絡開關(LAN網絡)斷電與TCP/IP協議和網絡TCP/IP協議和網絡拓撲

  1. 幾個基本問​​題。客戶端和服務器是否可以通知套接字連接不再處於活動狀態?客戶端和服務器在Win XP操作系統上運行,並使用C#編碼。

  2. 在套接字客戶端和套接字服務器之間打開半連接的情況下,網絡拓撲是否起作用?對於例如是否將其中一個或兩個的斷開狀態通知給另一端,並取決於網絡拓撲結構。

在此先感謝。

回答

2
  1. 網絡元素(如路由器/集線器/交換機)不會在TCP層發生故障時導致任何事情發生。操作系統可能會注意到物理層已關閉,並且如果網絡元件是與PC斷開連接的網絡元件,則該網絡卡上綁定的所有套接字都會出錯 - 這在操作系統/網卡和其他方面會有所不同。除此之外,爲了檢測連接是否被切斷,你必須發送一些東西並依靠TCP超時機制來出錯。這可以通過在連接上啓用TCP Keepalives來隱式完成。

  2. 只有當這些消息到達另一端時,如果網絡拓撲結構發生變化或者sometinhg在連接中斷時以這種方式消息不再到達另一端,斷開連接將不會被注意到。 (NAT網關是這類問題的一個重要來源,它們可能會超時一個他們正在跟蹤的TCP連接,並且除非您嘗試寫入某些內容(或啓用TCP keepalive),否則連接不再有效。連接)。請注意,大多數網絡API都要求您從連接到Discovver的連接中讀取另一端已關閉連接 - 假設這些「關閉」消息實際上已達到您的身邊。

+0

+1「他說了什麼。」下次我會嘗試輸入更快。 – 2010-08-03 18:43:59