我正在通过 UDP 写一个聊天。当我尝试从控制台应用程序转到 Windows 窗体时,我遇到了阻塞函数 ReceiveFrom() 的问题。当我尝试创建一个表单并单击一个按钮以使用 ReceiveFrom() 侦听传入数据包时,它只会阻止程序。我正在写这样的东西:
private void Listen_button_click(object sender, EventArgs e)
{
while(true){
ReceiveFrom(buf, ref clientEP);
data = buf.ToData(); //convert from bytes to string.
displayMessageDelegate(data);
packet = new Packet(acknowlegment);//acknowledgment that packet was received.
ack = packet.ToStream();
SendTo(ack, clientEP);//send ack, so client knows everything is ok.
}
我知道我可以使用 TCP,生活会轻松得多,但这样做是我的任务。而且我知道我可以使用非阻塞 BeginReceiveFrom(),但我想知道是否可以使用阻塞函数在 WF 中监听。