2010-08-03 124 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