C#模拟TCP端口无响应

标签 c# sockets tcp

我有一个用 C# 编写的作为 Windows 服务运行的代理服务器。它监听 127.0.0.1:xxxxx,其中 xxxxx 可以是从 53500 开始的一系列端口。

代理工作得很好,但有时某些端口停止响应,当我尝试远程登录到它们时,它说请求超时或没有响应。

我无法在我的开发区域中重现此问题,但我认为它与某些导致在 EndReceive 之后不调用 BeginReceive 的问题有关。以下引述来自关于我正在经历的症状的话题。

Similar problem is when using asynchronous communication and there is an execution path which turns out to not call BeginReceive once previous EndReceive was completed. This makes socket ignorant to all further data sent by the remote side.

有没有办法模拟这种端口停止响应的情况。我想写一些代码来检查端口是否在处理请求之前响应。如果它没有响应,我可以删除该端口上的监听器并重新添加它。这是一个创可贴,可以防止代理崩溃,直到我确定问题的原因。

我还添加了一些额外的日志记录以确定导致端口停止响应的原因。

最佳答案

我在摸黑,但代码是否包含在 try finally block 中?

如果 finally block 是您调用 EndReceive 的唯一地方,它可能会消除您的问题。

try{
    // processing code
}finally{
    EndReceive()
    BeginReceive()

}

关于C#模拟TCP端口无响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4948422/

相关文章:

c# - 检查类/接口(interface)继承的正确方法是什么?

c# - 我如何检测用户何时单击我的 slider 而不是统一滑动?

c# - C# 中泛型接口(interface)的简写语法

Java DatagramSocket 在网络负载过重时停止响应

c# - 任务应该一直等待吗?

c# - 如何以 List<T> 作为参数从泛型方法中读取值

c - 原始套接字 : Receiver printing garbage values

c++ - 使用Boost ASIO处理无套接字的TCP

go - 运行curl命令时,TCP服务器返回错误

bash - 使用 BASH 查找内部 IP 地址