有多少客户端可以连接到此服务器?
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 :(得分:2)
看起来Accept()
只会被调用一次。
所以一个客户。
答案 1 :(得分:1)
这一行之后:
server = server.Accept();
侦听套接字不再被引用,因为server
变量现在指向与连接的(一个)客户端对话的套接字。您也可以忽略来自该客户端的断开连接消息(当Socket.Receive()
返回0时)。
聚苯乙烯。你试图从GUI线程以外的另一个线程更新我猜的列表框(lstserver
),可能导致一个被忽略的异常,而不是更新列表框。