【发布时间】:2011-02-06 11:41:28
【问题描述】:
上下文:我正在将 linux perl 应用程序移植到 C#,服务器侦听 udp 端口并通过单个 udp 套接字与远程客户端维护多个并发对话。在测试期间,我向 udp 服务器发送大量数据包,随机重启客户端以观察服务器注册新连接。问题是这样的:当我杀死一个 udp 客户端时,服务器上可能仍有发往该客户端的数据。当服务器尝试发送此数据时,它会收到一条 icmp“无可用服务”消息,因此套接字上会发生异常。
我无法重用此套接字,当我尝试将 C# 异步处理程序与套接字关联时,它会抱怨异常,因此我必须关闭并重新打开服务器端口上的 udp 套接字。这是解决这个问题的唯一方法吗?肯定有某种方法可以“修复” udp 套接字,因为从技术上讲,UDP 套接字不应该知道远程套接字的状态?
任何帮助或指针将不胜感激。谢谢。
【问题讨论】: