【问题标题】:How to fix: The tcp server having close waits after client disconnected如何解决:客户端断开连接后,tcp 服务器关闭等待
【发布时间】:2019-06-19 07:18:39
【问题描述】:

我的 tcp 服务器被“Close_Waits”挂起。我需要一个示例程序来处理来自客户端的持久连接。

我尝试过捕获异常,然后关闭捕获中的套接字。但没有运气!

protected virtual void ReceiveCallBack(IAsyncResult result)
{
    var wrapper = (ConnectedSocketWrapper)result.AsyncState;
    try
    {

        int bytesRead = 0;

        bytesRead = wrapper.ConnectedSocket.EndReceive(result);

        LogInfo("Byte Read" + bytesRead.ToString());

        if (bytesRead > 0)
        {
            LogInfo("inside Byte Read > 0 : " + bytesRead.ToString());
            byte[] dataRead = wrapper.Buffer.Take(bytesRead).ToArray();

            wrapper.ConnectedSocket.BeginReceive(wrapper.Buffer, 0, this.configuration.BytesToReceiveInReadOperation, SocketFlags.None, this.ReceiveCallBack, wrapper);

            DataReceivedByServer dataReceived = new DataReceivedByServer(wrapper.Token, dataRead);

            EventDispatcher.RaiseEvent(dataReceived);

            if (DataReceived != null)
            {
                DataReceived(this, new DataReceivedEventArgs(dataRead, wrapper.Token));
            }

        }
        else
        {
            EventDispatcher.RaiseEvent(new ClientDisconnected(wrapper.Token, "Read 0 bytes (client disconnected gracefully)", wrapper.ConnectedSocket.RemoteEndPoint.ToString()));

            LogInfo("inside Byte Read = 0 : " + bytesRead.ToString());
            Close(wrapper.ConnectedSocket);
            Socket removeSocket;
            connectedSockets.TryRemove(wrapper.Token, out removeSocket);
        }
    }
    catch
    {
        Close(wrapper.ConnectedSocket);
        throw;
    }

}

我需要一个可以无缝处理请求的空闲 TCP 服务器。

【问题讨论】:

  • 你遇到了哪个异常?
  • 我没有遇到任何异常。客户端无法连接,在wireshark上我确实看到所有客户端尝试的重置。

标签: c# tcp server persistent


【解决方案1】:

如果我是你,我会检查代码和/或使用这个simplsockets,它的可读性很强。

也可以看看这个MultiProtocolAspNetCore,它是关于如何在ASP.NET Core之上构建TCP服务器。

还可以阅读这篇很棒的TCP/IP .NET Socket FAQ

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-15
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    相关资源
    最近更新 更多