Maison  >  Article  >  développement back-end  >  La connexion Golang TCP fonctionne mais pas UDP

La connexion Golang TCP fonctionne mais pas UDP

PHPz
PHPzavant
2024-02-06 10:54:12388parcourir

Golang TCP 连接有效,但 UDP 无效

Contenu des questions

J'écoute via netcat nc -lkp 1902

Chaque fois que j'établis une connexion TCP et que j'essaie d'envoyer des journaux, cela fonctionne

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

Sortie

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

Mais chaque fois que j'essaie d'établir une connexion UDP, cela ne fonctionne pas, quelqu'un peut-il m'expliquer pourquoi je ne reçois rien sur l'enregistreur ?

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

Vous voulez créer un petit poc pour envoyer des journaux via udp afin de réduire le retard, j'ai d'abord essayé d'établir une connexion TCP, cela fonctionne bien mais udp ne fonctionne pas, quelqu'un peut-il expliquer ce que je dois faire pour que cela fonctionne ? p>

Bonne réponse


Netcat crée des connexions TCP par défaut, sauf indication contraire. Pour les connexions UDP, vous devez utiliser le drapeau -u de netcat. Depuis la page de manuel netcat

-u Utilisez UDP au lieu de l'option TCP par défaut.

Donc, changer l'écouteur en nc -luk 1902 devrait résoudre le problème des connexions UDP.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer