Go言語によるUDP通信プログラム(クライアント)を作成しています。
参考にしたのはこちらのサイトのコード
GolangでUDPサーバー&クライアントを作成してWiresharkで検証する
問題点は、サーバーに対し、リクエストデータを発信したのち、応答を待っても受信できない事
です。
通信内容確認は、WireSharkにて行っています。
WireSharkの画面上では、サーバーに対するリクエストデータは、想定通り任意のアスキーコードを送信できており、UDPサーバーからはOK/NGのアスキー文字が応答データとして返信されています。
しかし、Goコードにて受信ができておりません。
WireShark上で閲覧できていると言う事は、UDPサーバーから応答データは発信されていると考えています。
よって、受信コードに何かしらの不備があるのではと考えているのですが、何に問題があるのかわからない状況です。
go
1 fmt.Println("UDP ResolveUDPAddr:192.168.1.201:50000") 2 udpAddr, err := net.ResolveUDPAddr("udp", "192.168.1.201:50000") // データ送り付け先 3 if err != nil { 4 fmt.Fprintf(os.Stderr, "Fataaaaal Error ", err.Error()) 5 os.Exit(1) 6 } 7 8 fmt.Println("UDP Dial") 9 conn, err := net.DialUDP("udp", nil, udpAddr) 10 if err != nil { 11 fmt.Fprintf(os.Stderr, "Fataaaaal Error ", err.Error()) 12 os.Exit(1) 13 } 14 15 fmt.Println("UDP SendCommand:STOP") 16 _, err = conn.Write([]byte("STOP\r\n")) // 停止要求コマンド 17 18 if err != nil { 19 fmt.Fprintf(os.Stderr, "Fataaaaal Error ", err.Error()) 20 os.Exit(1) 21 } 22 23 fmt.Println("Receiving from server") 24 buffer := make([]byte, 64) 25 length, err := conn.Read(buffer) // <-- ここで受信したいが待っている様子。 26 if err != nil { 27 panic(err) 28 } 29 fmt.Printf("Received: %s\n", string(buffer[:length])) 30
bash
1UDP ResolveUDPAddr:192.168.1.201:50000 2UDP Dial 3UDP SendCommand:STOP 4Receiving from server <-- ここで止まってしまっている。
wireshark
1■送信パケット 2\192.168.1.200:64077 -> 192.168.1.201:50000 30000 00 08 dc 54 80 9b c8 5b 76 1b f8 08 08 00 45 00 ...T...[v.....E. 40010 00 22 a0 36 00 00 80 11 00 00 c0 a8 01 c8 c0 a8 .".6............ 50020 01 c9 fa 4d c3 50 00 0e 85 01 53 54 4f 50 0d 0a ...M.P....STOP.. 6 7■受信パケット 8\192.168.1.201:50000 -> 192.168.1.200:50000 90000 c8 5b 76 1b f8 08 00 08 dc 54 80 9b 08 00 45 00 .[v......T....E. 100010 00 20 08 3c 40 00 80 11 6d af c0 a8 01 c9 c0 a8 . .<@...m....... 110020 01 c8 c3 50 c3 50 00 0c 97 fd 4f 4b 0d 0a 00 00 ...P.P....OK.... 120030 00 00 00 00 00 00 00 00 00 00 00 00 ............
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。