我在 go 中編寫了一個(gè)簡單的 UDP 服務(wù)器。當(dāng)我這樣做時(shí),go run udp.go它會打印我發(fā)送給它的所有包裹。但是在運(yùn)行時(shí),go run udp.go > out它會在客戶端停止時(shí)停止傳遞stdout給out文件。客戶端是發(fā)送 10k 請求的簡單程序。所以在文件中我有大約 50% 的已發(fā)送包裹。當(dāng)我再次運(yùn)行客戶端時(shí),out文件再次增長,直到客戶端腳本完成。服務(wù)器代碼: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 回答
- 0 關(guān)注
- 256 瀏覽
添加回答
舉報(bào)
0/150
提交
取消