0
他のすべての書き込みに拒否したgolang UDP接続は、私はUbuntuのLinuxの16.04でこのUDPクライアントプログラムを実行した
$ go run server.go
1 write udp 127.0.0.1:58703->127.0.0.1:10001: write: connection refused
3 write udp 127.0.0.1:58703->127.0.0.1:10001: write: connection refused
5 write udp 127.0.0.1:58703->127.0.0.1:10001: write: connection refused
をしかし、私は代わりに、この出力を期待:
を$ go run server.go
1 write udp 127.0.0.1:58703->127.0.0.1:10001: write: connection refused
2 write udp 127.0.0.1:58703->127.0.0.1:10001: write: connection refused
3 write udp 127.0.0.1:58703->127.0.0.1:10001: write: connection refused
4 write udp 127.0.0.1:58703->127.0.0.1:10001: write: connection refused
5 write udp 127.0.0.1:58703->127.0.0.1:10001: write: connection refused
tcpdumpは:
15:28:46.453313 IP localhost.47993 > localhost.10001: UDP, length 1
15:28:46.453338 IP localhost > localhost: ICMP localhost udp port 10001 unreachable, length 37
15:28:48.453821 IP localhost.47993 > localhost.10001: UDP, length 1
15:28:48.453852 IP localhost > localhost: ICMP localhost udp port 10001 unreachable, length 37
15:28:50.454242 IP localhost.47993 > localhost.10001: UDP, length 1
15:28:50.454271 IP localhost > localhost: ICMP localhost udp port 10001 unreachable, length 37
これはいつも毎回conn.Writeが毎回代わりに書き込みを行うのはなぜですか?私は非難するつもりはない、私はちょうど理由を学びたい。あなたは、パケットキャプチャをより詳しく見ると
サーバーが接続をどのように処理するかを共有できますか?ブロックされているように見えるか、そのようなものです。 –
要件がない限り、接続されたUDPソケットを使用しないことをお勧めします。 – JimB
@JimBこの "接続されたUDPソケット"とは何ですか?私はUDPがコネクションレスであると思いましたか?彼らはどこでそれを避けるのが一般的ですか? – selden