0

go で udp サーバーを構築しようとしたところ、UDPConn のメソッド ReadFromUDP がスレッドをブロックしていないことがわかりました。この問題に直面している人がいて、解決策が見つからないことをグーグルで調べました。

私のシステムは osx 10.8.2、go バージョンは 1.1.1 です

以下のコードリスト

addr, _ := net.ResolveUDPAddr("udp", "localhost:10234")
conn, err := net.ListenUDP("udp", addr)
if err != nil {
    fmt.Println(err.Error())
    return
}
defer conn.Close()

var buf []byte
for {
    n, remote_addr, _ := conn.ReadFromUDP(buf)
    fmt.Println("from", remote_addr,"got message:", string(buf[:n]))
}

次のリストを取得しました。from <nil> got message:

4

2 に答える 2

2

OSXで何かが壊れていると思います。エラーなどを無視しないようにわずかに変更されたコードは、Linuxで問題なく動作します。

于 2013-07-29T07:57:01.120 に答える
2

システムを osx 10.8.4 に更新しました 上記のコードが正しく動作しません。

私はudpサーバーコードを私のコードと比較します。

と変更var buf []byteしますbuf := make([]byte, 1024)

今はうまくいきます。

于 2013-07-29T09:04:01.303 に答える