2011-12-29 77 views
-5

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

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) { 
     } 
    } 
} 
+0

您有多少客户*尝试*连接到该服务器? – 2011-12-29 00:26:48

+0

将您从'server.Accept()'获得的值传递给新线程,并继续接受' – 2011-12-29 00:32:11

回答

2

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

所以一个客户。

+0

请帮我做我所做的事情?编写代码。 – 2011-12-29 00:34:19

+2

你想做什么?我还没有看到。我以为你只是想知道有多少客户端可以连接... – sarnold 2011-12-29 00:39:15

+0

我想连接到服务器的第二个客户端 – 2011-12-29 00:52:31

1

这一行后:

server = server.Accept(); 

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

Ps。你试图更新我认为是来自GUI线程以外的线程的列表框(lstserver),可能导致一个默默忽略的异常,并且不更新列表框。

相关问题