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