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

La connexion Golang TCP fonctionne mais pas UDP

PHPz
Libérer: 2024-02-06 10:54:12
avant
455 Les gens l'ont consulté

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")
Copier après la connexion

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
Copier après la connexion

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")
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal