我正在尝试编写一个使用GO通过UDP进行通信的简单程序。它应该具有主/从架构,因此我希望主机每秒发送一次“活”信号十次。由于我也希望主设备监听来自从设备的消息,因此我使用receive功能启动了goroutine。在测试中我只使用一台计算机,因此它唯一接收的是它自己的活动信号。然而,在收到大约20条消息后,程序冻结了。我试过运行程序只发送消息,它不会冻结。这是接收函数:
func receive(conn *net.UDPConn){
//Receive message from network
received := make([]byte,1024)
for ; true ; {
_, _, _ = conn.ReadFromUDP(received)
println("Motatt: ", string(received))
go receiveMessage(string(received))
}
}
函数receiveMessage()只是一个读取它收到的消息的函数。
我想知道的是,GO中是否存在导致冻结的设置或其他内容?据我所知,由于有接收消息,所以不能是截止日期错误。