无论如何,我试图使用TCPListener和TCPClient使客户端连接到服务器
每当我有while (true)
代码时,它就会冻结我的整个应用程序。
我的代码:
private void addSocket(int port)
{
server = new TcpListener(IPAddress.Any, port);
server.Start();
client = server.AcceptTcpClient();
sr = new StreamReader(client.GetStream());
sw = new StreamWriter(client.GetStream());
toolStripStatusLabel2.Text = "waiting for connection";
while (true)
{
toolStripStatusLabel2.Text = "client connected";
}
server.Stop();
client.Close();
}
答案 0 :(得分:0)
那是因为while (true)
永远不会结束。添加一个将在某个时刻返回false
的条件。
在这种情况下,while
对我没有意义。你的意图是什么?只需启动Task
或BackgroundWorker
即可处理该流。
答案 1 :(得分:0)
while(true)
是一个无限循环,摆脱它的唯一方法是使用break
。或者将while(true)
更改为可选择结束的某些条件。
在此代码中,while(true)
部分对我来说没有任何意义,您应该在该部分添加其他内容,例如一些连接等等。
答案 2 :(得分:0)
你不需要它一直都是,是吗?
private void addSocket(int port)
{
server = new TcpListener(IPAddress.Any, port);
server.Start();
client = server.AcceptTcpClient();
sr = new StreamReader(client.GetStream());
sw = new StreamWriter(client.GetStream());
toolStripStatusLabel2.Text = "waiting for connection";
toolStripStatusLabel2.Text = "client connected";
server.Stop();
client.Close();
toolStripStatusLabel2.Text = "client not connected";
}
您只需为其更改文字即可。然后你可以稍后改变!!。
下次如果你想使用while(true){};考虑使用Thread
答案 3 :(得分:0)
如果您只是删除while
声明,也许您的程序会运行正常,因为我在您的代码中看不到任何需要