首页 > 解决方案 > TCP客户端连接错误,现有连接被远程主机强行关闭

问题描述

我在服务器 2012 R2 中运行 Win 服务,服务连接总是掉线并且我得到以下错误,我还分享了 TCP 连接代码。

错误信息:

无法从传输连接读取数据:现有连接被远程主机强行关闭。InnerExceptionMessage 远程 hostStackTrace 在 System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) 处强制关闭现有连接

try
            {
                IsStop = false;
                TcpClient client = null;
                TcpListener server = new TcpListener(IPAddress.Parse(ipAddress), port);
                server.Start();
                IsRunning = true;
                
                while (IsRunning)
                {
                    client = await server.AcceptTcpClientAsync();                   
                    try
                    {
                        using (NetworkStream stream = client.GetStream())

                        {                            
                            try
                            {
                            byte[] dataArray = new byte[36];
                                var bytesRead = stream.Read(dataArray, 0, 36);
                                if (dataArray[0] != 0)
                                {
                                    if (processString(dataArray, 4, 7) != 0)  // check ID 
                                    {
                                        Thread thread = new Thread(new ParameterizedThreadStart(DataProcessThreadAsync));
                                        object[] obj = new object[] { dataArray, thread };
                                        thread.Start(obj);
                                    }

                                }                              
                                stream.Close();    
                                stream.Dispose();
                                
                            }
                         catch (Exception ex)
                        {
              
                            LoggerHelper.Instance.LogError(ex);
                        }
                    }
                }
                    catch(Exception ex)
                    {
                        LoggerHelper.Instance.LogError(ex);
                        
                    }
                

                IsStop = true;
                }
            }
            catch (Exception ex)
            {
                LoggerHelper.Instance.LogError(ex);
             
            }

请帮助我,在此先感谢。

标签: c#socketstcpclient

解决方案


推荐阅读