C#线程没有侦听来自服务器的传入消息

时间:2016-10-25 07:13:47

标签: c# multithreading

每次客户端连接到我的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;
    }
} 

0 个答案:

没有答案