C# socket通信报错 远程主机强迫关闭了一个现有的连接。 SocketErrorCode = ConnectionReset

大娱乐家诶 2017-11-02 07:46:55
最近在做C# Socket通信服务端但在查看错误日志时发现经常会出现:远程主机强迫关闭了一个现有的连接。
private void button2_Click(object sender, EventArgs e)
{
string SerIP = System.Configuration.ConfigurationSettings.AppSettings["LocalIP"];
string port= System.Configuration.ConfigurationSettings.AppSettings["LocalPort"];
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
serverSocket = socket;
//ip port vserverAddress
socket.Bind(new IPEndPoint(IPAddress.Parse(SerIP), int.Parse(port)));//serverAddress);
socket.Listen(20);//连接等待队列
Thread myThread = new Thread(AcceptClientConnect);
myThread.Start(socket);
}

public void AcceptClientConnect(object socket)
{
var serverSocket = socket as Socket;
while (true)
{
try
{
var proxSocket = serverSocket.Accept();
ClientProxClentList.Add(proxSocket);
//接受消息
ReceiveData(proxSocket);
}
catch (Exception ex)
{ }
}
}

public void ReceiveData(object obj)
{
try
{
Socket proxSocket = obj as Socket;
byte[] data = new byte[1024 * 1024];
while (true)
{
int readLen = 0;
try
{
readLen = proxSocket.Receive(data, 0, data.Length, SocketFlags.None);
}
#region 异常处理
catch (Exception ex)
{
/****/此处报错远程主机强迫关闭了一个现有的连接。
}
#endregion



#region 答复
if (proxSocket.Connected)
{
// 返回内容
byte[] result = new byte[1024];
proxSocket.Send(result, 0, result.Length, SocketFlags.None);
}
#endregion
}
else
{ }
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
...全文
2579 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
大娱乐家诶 2017-11-03
  • 打赏
  • 举报
回复
引用 1 楼 xdashewan 的回复:
你的程序没有退出条件的吗?while (true)?
设定的是一直启动等待客户端连接,或者说我该在什么状态下进行一个推出操作?
xdashewan 2017-11-03
  • 打赏
  • 举报
回复
你的程序没有退出条件的吗?while (true)?
xdashewan 2017-11-03
  • 打赏
  • 举报
回复
引用 2 楼 lsf199 的回复:
设定的是一直启动等待客户端连接,或者说我该在什么状态下进行一个推出操作?
你循环的是Receive,并不是等待连接

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧