有多少客户端可以连接到此服务器?

时间:2011-12-29 00:20:15

标签: c#

有多少客户端可以连接到此服务器?

private void btnserverconect_Click(object sender, EventArgs e)
{
    Form1_Load(sender, e);
}

private void Form1_Load(object sender, EventArgs e)
{
    try {
        server =
            new Socket(AddressFamily.InterNetwork, SocketType.Stream,
                   ProtocolType.Tcp);

        //IPAddress local = IPAddress.Parse("127.0.0.1");
        EndPoint destination = new IPEndPoint(IPAddress.Any, 8000);
        server.Bind(destination);
        server.Listen(5);
        Thread wait = new Thread(wa);
        wait.Start();
    }
    catch(Exception) {
        MessageBox.Show("connection error !");
    }
}

void wa()
{
    label1.Text = "please wait...";
    server = server.Accept();
    label1.Text = "connect";
    while (true) {
        try {
            byte[]by = new byte[100];
            int n = server.Receive(by);
            lstserver.Items.Add("client :" +
                        Encoding.ASCII.GetString(by, 0, n));
        }
        catch(Exception) {
        }
    }
}

2 个答案:

答案 0 :(得分:2)

看起来Accept()只会被调用一次。

所以一个客户。

答案 1 :(得分:1)

这一行之后:

server = server.Accept();

侦听套接字不再被引用,因为server变量现在指向与连接的(一个)客户端对话的套接字。您也可以忽略来自该客户端的断开连接消息(当Socket.Receive()返回0时)。

聚苯乙烯。你试图从GUI线程以外的另一个线程更新我猜的列表框(lstserver),可能导致一个被忽略的异常,而不是更新列表框。