Rumah > pembangunan bahagian belakang > Golang > Sambungan TCP Golang berfungsi tetapi UDP tidak berfungsi

Sambungan TCP Golang berfungsi tetapi UDP tidak berfungsi

PHPz
Lepaskan: 2024-02-06 10:54:12
ke hadapan
455 orang telah melayarinya

Golang TCP 连接有效,但 UDP 无效

Kandungan soalan

Saya sedang mendengar melalui netcat nc -lkp 1902

Setiap kali saya membuat sambungan tcp dan cuba menghantar log, ia berfungsi

timeout := 30 * time.second
    conn, err := net.dialtimeout("tcp", "localhost:1902", timeout)
    if err != nil {
        panic("failed to connect to localhost:1902")
    }
    defer conn.close()

    f := log.ldate | log.lshortfile
    logger := log.new(conn, "example-", f)
    logger.println("this is a regular message1")
    logger.println("this is a regular message2")
    logger.println("this is a regular message3")
    logger.println("this is a regular message4")
    logger.println("this is a regular message5")
    logger.println("this is a regular message6")
Salin selepas log masuk

Output

example-2022/11/18 technique24.go:21: this is a regular message1
example-2022/11/18 technique24.go:22: this is a regular message2
example-2022/11/18 technique24.go:23: this is a regular message3
example-2022/11/18 technique24.go:24: this is a regular message4
example-2022/11/18 technique24.go:25: this is a regular message5
example-2022/11/18 technique24.go:26: this is a regular message6
Salin selepas log masuk

Tetapi apabila saya cuba membuat sambungan udp ia tidak berfungsi, bolehkah seseorang menjelaskan mengapa saya tidak mendapat apa-apa pada pembalak?

timeout := 30 * time.Second
    conn, err := net.DialTimeout("udp", "localhost:1902", timeout)
    if err != nil {
        panic("Failed to connect to localhost:1902")
    }
    defer conn.Close()

    f := log.Ldate | log.Lshortfile
    logger := log.New(conn, "example-", f)
    logger.Println("This is a regular message1")
    logger.Println("This is a regular message2")
    logger.Println("This is a regular message3")
    logger.Println("This is a regular message4")
    logger.Println("This is a regular message5")
    logger.Println("This is a regular message6")
Salin selepas log masuk

Ingin membuat poc kecil untuk menghantar log melalui udp untuk mengurangkan tunggakan, cuba mewujudkan sambungan tcp dahulu, ia berfungsi dengan baik tetapi udp tidak, bolehkah seseorang menerangkan apa yang saya perlu lakukan untuk menjadikannya berfungsi? p>

Jawapan Betul


Netcat mencipta sambungan TCP secara lalai melainkan dinyatakan sebaliknya. Untuk sambungan UDP, anda perlu menggunakan bendera -u netcat. Dari laman netcat man

-u Gunakan UDP dan bukannya pilihan TCP lalai.

Jadi menukar pendengar kepada nc -luk 1902 sepatutnya menyelesaikan masalah dengan sambungan UDP.

Atas ialah kandungan terperinci Sambungan TCP Golang berfungsi tetapi UDP tidak berfungsi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan