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);
}
}
...全文
963 3 点赞 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
大娱乐家诶 2017-11-03
引用 1 楼 xdashewan 的回复:
你的程序没有退出条件的吗?while (true)?
设定的是一直启动等待客户端连接,或者说我该在什么状态下进行一个推出操作?
  • 打赏
  • 举报
回复
xdashewan 2017-11-03
你的程序没有退出条件的吗?while (true)?
  • 打赏
  • 举报
回复
xdashewan 2017-11-03
引用 2 楼 lsf199 的回复:
设定的是一直启动等待客户端连接,或者说我该在什么状态下进行一个推出操作?
你循环的是Receive,并不是等待连接
  • 打赏
  • 举报
回复
相关推荐
发帖
C#
加入

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2017-11-02 07:46
社区公告

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