为了账号安全,请及时绑定邮箱和手机立即绑定

golang UDP服务器的奇怪行为

golang UDP服务器的奇怪行为

Go
森林海 2021-06-30 16:01:22
我在 go 中编写了一个简单的 UDP 服务器。当我这样做时,go run udp.go它会打印我发送给它的所有包裹。但是在运行时,go run udp.go > out它会在客户端停止时停止传递stdout给out文件。客户端是发送 10k 请求的简单程序。所以在文件中我有大约 50% 的已发送包裹。当我再次运行客户端时,out文件再次增长,直到客户端脚本完成。服务器代码:package mainimport (  "net"  "fmt")func main() {  addr, _ := net.ResolveUDPAddr("udp", ":2000")  sock, _ := net.ListenUDP("udp", addr)  i := 0  for {    i++    buf := make([]byte, 1024)    rlen, _, err := sock.ReadFromUDP(buf)    if err != nil {      fmt.Println(err)    }    fmt.Println(string(buf[0:rlen]))    fmt.Println(i)    //go handlePacket(buf, rlen)  }}这是客户端代码:package mainimport (  "net"  "fmt")func main() {  num := 0  for i := 0; i < 100; i++ {    for j := 0; j < 100; j++ {      num++      con, _ := net.Dial("udp", "127.0.0.1:2000")      fmt.Println(num)      buf := []byte("bla bla bla I am the packet")      _, err := con.Write(buf)      if err != nil {        fmt.Println(err)      }    }  }}
查看完整描述

2 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

尝试在写语句后同步标准输出。

os.Stdout.Sync()


查看完整回答
反对 回复 2021-07-05
  • 2 回答
  • 0 关注
  • 232 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信