Heim > Backend-Entwicklung > Golang > Die Golang-TCP-Verbindung funktioniert, UDP jedoch nicht

Die Golang-TCP-Verbindung funktioniert, UDP jedoch nicht

PHPz
Freigeben: 2024-02-06 10:54:12
nach vorne
454 Leute haben es durchsucht

Golang TCP 连接有效,但 UDP 无效

Frageninhalt

Ich höre über Netcat zu nc -lkp 1902

Immer wenn ich eine TCP-Verbindung herstelle und versuche, Protokolle zu senden, funktioniert es

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")
Nach dem Login kopieren

Ausgabe

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
Nach dem Login kopieren

Aber wenn ich versuche, eine UDP-Verbindung herzustellen, funktioniert es nicht. Kann mir jemand erklären, warum der Logger nichts anzeigt?

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")
Nach dem Login kopieren

Möchten Sie einen kleinen POC erstellen, um Protokolle über UDP zu senden, um den Rückstand zu verringern? Ich habe zuerst versucht, eine TCP-Verbindung herzustellen. Es funktioniert einwandfrei, UDP jedoch nicht. Kann mir jemand erklären, was ich tun muss, damit es funktioniert? p>

Richtige Antwort


Netcat erstellt standardmäßig TCP-Verbindungen, sofern nicht anders angegeben. Für UDP-Verbindungen müssen Sie das -u-Flag von Netcat verwenden. Von der Netcat-Manpage

-u Verwenden Sie UDP anstelle der Standard-TCP-Option.

Das Ändern des Listeners auf nc -luk 1902 sollte das Problem mit UDP-Verbindungen beheben.

Das obige ist der detaillierte Inhalt vonDie Golang-TCP-Verbindung funktioniert, UDP jedoch nicht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage