Home > Backend Development > Golang > How to use network programming functions in Go language to implement UDP broadcast communication?

How to use network programming functions in Go language to implement UDP broadcast communication?

WBOY
Release: 2023-07-30 13:24:22
Original
1530 people have browsed it

How to use network programming functions in Go language to implement UDP broadcast communication?

In network communications, UDP broadcast can be used to send messages to all devices on the same network without the need for a one-to-one connection. In Go language, you can use network programming functions to implement UDP broadcast communication. This article will introduce how to use network programming functions in the Go language to implement UDP broadcast communication and provide corresponding code examples.

First, we need to import the net and fmt packages. The net package provides basic functions for network programming, and The fmt package is used for formatted output.

import (
    "net"
    "fmt"
)
Copy after login

Next, we need to create a UDP Socket and bind it to the specified IP address and port. We can use the net.ResolveUDPAddr function to perform address resolution and the net.ListenUDP function to create a UDP Socket.

func main() {
    // 解析地址
    addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:8080")
    if err != nil {
        fmt.Println("地址解析失败:", err)
        return
    }

    // 创建Socket
    conn, err := net.ListenUDP("udp", addr)
    if err != nil {
        fmt.Println("创建UDP Socket失败:", err)
        return
    }

    defer conn.Close()
}
Copy after login

After creating the UDP Socket, we can use the conn.WriteToUDP function to send UDP data to the specified IP address and port.

func main() {
    // ...

    n, err := conn.WriteToUDP([]byte("Hello, World!"), addr)
    if err != nil {
        fmt.Println("发送UDP数据失败:", err)
        return
    }

    fmt.Println("发送了", n, "字节的数据")
}
Copy after login

Then, we need to monitor the reception of messages on the UDP Socket. We can use the conn.ReadFromUDP function to read data from the UDP Socket and get the sender's IP address and port.

func main() {
    // ...

    buffer := make([]byte, 1024)
    n, remoteAddr, err := conn.ReadFromUDP(buffer)
    if err != nil {
        fmt.Println("接收UDP数据失败:", err)
        return
    }

    fmt.Println("接收到来自", remoteAddr, "的UDP数据:", string(buffer[:n]))
}
Copy after login

Finally, we can use the conn.SetBroadcast function to set the UDP Socket to broadcast mode and use the conn.WriteToUDP function to send broadcast messages.

func main() {
    // ...

    // 设置为广播模式
    err = conn.SetBroadcast(true)
    if err != nil {
        fmt.Println("设置广播模式失败:", err)
        return
    }

    // 广播消息
    broadcastAddr := &net.UDPAddr{IP: net.IPv4(255, 255, 255, 255), Port: 8080}
    n, err = conn.WriteToUDP([]byte("Broadcast Message"), broadcastAddr)
    if err != nil {
        fmt.Println("发送广播消息失败:", err)
        return
    }

    fmt.Println("发送了", n, "字节的广播消息")
}
Copy after login

The complete code example is as follows:

package main

import (
    "net"
    "fmt"
)

func main() {
    addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:8080")
    if err != nil {
        fmt.Println("地址解析失败:", err)
        return
    }

    conn, err := net.ListenUDP("udp", addr)
    if err != nil {
        fmt.Println("创建UDP Socket失败:", err)
        return
    }

    defer conn.Close()

    n, err := conn.WriteToUDP([]byte("Hello, World!"), addr)
    if err != nil {
        fmt.Println("发送UDP数据失败:", err)
        return
    }

    fmt.Println("发送了", n, "字节的数据")

    buffer := make([]byte, 1024)
    n, remoteAddr, err := conn.ReadFromUDP(buffer)
    if err != nil {
        fmt.Println("接收UDP数据失败:", err)
        return
    }

    fmt.Println("接收到来自", remoteAddr, "的UDP数据:", string(buffer[:n]))

    err = conn.SetBroadcast(true)
    if err != nil {
        fmt.Println("设置广播模式失败:", err)
        return
    }

    broadcastAddr := &net.UDPAddr{IP: net.IPv4(255, 255, 255, 255), Port: 8080}
    n, err = conn.WriteToUDP([]byte("Broadcast Message"), broadcastAddr)
    if err != nil {
        fmt.Println("发送广播消息失败:", err)
        return
    }

    fmt.Println("发送了", n, "字节的广播消息")
}
Copy after login

Through the above code example, we can use the network programming functions in the Go language to implement UDP broadcast communication. You can modify and expand it according to actual needs to achieve more complex network communication functions.

The above is the detailed content of How to use network programming functions in Go language to implement UDP broadcast communication?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template