每次客户端连接到我的TCP服务器时,它都会专门为该客户端创建一个新线程(客户端很少,因此不必担心线程溢出)。然而,经过大量的调试,我发现一旦有2个客户端加入,第一个客户端可以发送大约3个消息然后将不再运行,但是第二个将继续运行无论多少次你发送一条消息(第一个客户端将收到它)。如果第三个客户端加入聚会,那么第二个客户端将具有与第一个客户端相同的命运,将能够发送约3条消息,然后突然停止工作而无需解释。如果有人能够解释为什么会这样,那将非常感谢!这是服务器的代码(我认为是发生错误的地方):
s = listener.AcceptSocket();
clients.Add(s);
NewListener();
byte[] b = new byte[100];
while (running)
{
try
{
int k = s.Receive(b);
string message = "";
for (int i = 0; i < k; i++)
{
message += Convert.ToChar(b[i]);
}
if (message == "exitprogram") //break loop
{
break;
}
ASCIIEncoding asen = new ASCIIEncoding();
foreach (Socket client in clients)
{
client.Send(asen.GetBytes(message));
}
} catch
{
Console.WriteLine("Error occured on thread " + Thread.CurrentThread.Name);
break;
}
}