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

Sambungan TCP Golang berfungsi tetapi UDP tidak berfungsi

PHPz
PHPzke hadapan
2024-02-06 10:54:12388semak imbas

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")

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

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")

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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam