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);
}
}