我正在使用创建服务器/客户端样式程序,它使用tcp连接。
现在,服务器就像this,但它只会在收到一个请求之前监听。我的问题在于,只有收到一条消息才会收听,然后关闭。然而,更大的问题是滞后,它不会让我以任何方式与表单交互,直到它关闭连接。有没有办法让它“被动地”倾听,因为缺少一个更好的词?我不希望它占用大量的CPU。
感谢您的帮助!
这是在vb.net。
答案 0 :(得分:2)
在Windows中,按键,鼠标点击和移动等事件将作为事件(消息)发送到专用于处理它们的线程。如果该线程需要很长时间来处理消息(如等待TCP请求进入),则该线程被称为“阻塞”,直到该任务完成,基本上阻止了整个用户界面。
您希望设置一个与运行表单的线程分开的线程来处理TCP侦听。 Vb.Net中的这个tutorial on threading应该让你走上正确的道路。
答案 1 :(得分:0)
查看TcpListener课程,同时查看Pending方法显示的代码。
你最好使用线程来处理所有这些,因为你希望你的UI线程保持可用,以保持你的UI响应。