socket.accept()在窗口表格c#中不起作用



我想创建一个应用程序客户端-LAN(局部区域网络)中的服务器聊天。我在控制台C#中演示了完整的情况。但是,当我使用窗口表单(c#)时,在服务器端,它被卡在行中:

Socket client = newsock.Accept();

并且不运行出现窗口形式。

我该如何修复?谢谢大家!

这是因为,newsock.Accept()方法实际上正在等待请求,而您的代码的下一行(显然是UI组件的初始化方法)才能到达请求,直到请求已被请求。已收到。您要做的就是将其移至线程中,然后将其分配给负载事件。例如:

public MyForm(){
    InitializeComponent();
    this.Loaded += OnWindowLoaded;
}  
private async void OnWindowLoaded(object sender, EventArgs e)
{
    await Task.Run(() => {
        while (runState) {
             Socket client = newsock.Accept();
             // Then do the rest
        }
    });
}

最新更新