当客户端断开连接后,此段代码仍然一直循环,抛出System.StackOverflowException错误,由于是新手,一直不能明白是哪里出了错,怀疑是无法被catch到,但是不知道怎么解决。求大家帮帮忙
以下是代码
private void Receive(object obj)
{
Socket client = obj as Socket;
IPEndPoint point = client.RemoteEndPoint as IPEndPoint;
try
{
byte[] msg = new byte[1024];
int msgLen = client.Receive(msg);
Console.WriteLine(point.Address + "【" + point.Port + "】出现故障");
Console.WriteLine(msgLen + System.BitConverter.ToInt32(msg, 4) );
//rundata(msg, client);
Console.WriteLine(clientList.Contains(client));
Receive(client);
}
catch
{
Console.WriteLine(point.Address + "【" + point.Port + "】积极断开");
//clientList.Remove(client);
for (int i = 0; i < clientList.Count; i++) {
if (Equals(clientList [i], client))
{
clientList.RemoveAt(i);
}
}
//return;
}
}
以下是代码
private void Receive(object obj)
{
Socket client = obj as Socket;
IPEndPoint point = client.RemoteEndPoint as IPEndPoint;
try
{
byte[] msg = new byte[1024];
int msgLen = client.Receive(msg);
Console.WriteLine(point.Address + "【" + point.Port + "】出现故障");
Console.WriteLine(msgLen + System.BitConverter.ToInt32(msg, 4) );
//rundata(msg, client);
Console.WriteLine(clientList.Contains(client));
Receive(client);
}
catch
{
Console.WriteLine(point.Address + "【" + point.Port + "】积极断开");
//clientList.Remove(client);
for (int i = 0; i < clientList.Count; i++) {
if (Equals(clientList [i], client))
{
clientList.RemoveAt(i);
}
}
//return;
}
}