Тип net.UDPAddr
Тип net.UDPAddr используется для хранения информации
о UDP-адресе в сетевых операциях. Он содержит два основных поля:
IP (тип net.IP) — IP-адрес узла,
и Port (тип int) — номер порта.
Этот тип реализует интерфейс net.Addr,
что позволяет использовать его в функциях для работы с сетью.
Основное предназначение net.UDPAddr — передача
адреса назначения или источника при отправке и получении
UDP-датаграмм.
Создание UDPAddr
Для создания нового экземпляра net.UDPAddr
используется функция net.ResolveUDPAddr.
Она принимает сетевой протокол ("udp", "udp4", "udp6")
и строковое представление адреса в формате "host:port"
или "ip:port". Функция возвращает указатель на
net.UDPAddr и ошибку, если адрес не удалось разобрать.
Синтаксис
func ResolveUDPAddr(network, address string) (*UDPAddr, error)
Пример
Давайте создадим UDP-адрес для локального сервера с портом 8080:
package main
import (
"fmt"
"net"
)
func main() {
addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:8080")
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Printf("IP: %s, Port: %d\n", addr.IP, addr.Port)
}
Результат выполнения кода:
"IP: 127.0.0.1, Port: 8080"
Пример
Разберем адрес для IPv6 и сравним его строковое представление:
package main
import (
"fmt"
"net"
)
func main() {
addr, err := net.ResolveUDPAddr("udp6", "[::1]:9090")
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Printf("IP: %s, Port: %d\n", addr.IP, addr.Port)
fmt.Println("String:", addr.String())
}
Результат выполнения кода:
"IP: ::1, Port: 9090"
"String: [::1]:9090"
Пример
Попробуем указать неверный формат адреса, чтобы увидеть ошибку:
package main
import (
"fmt"
"net"
)
func main() {
addr, err := net.ResolveUDPAddr("udp", "invalid:port")
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Printf("IP: %s, Port: %d\n", addr.IP, addr.Port)
}
Результат выполнения кода:
"Error: address invalid:port: missing port in address"
Методы UDPAddr
Тип net.UDPAddr имеет метод Network,
который возвращает имя сети ("udp", "udp4" или "udp6"),
и метод String, возвращающий строковое представление
адреса в формате "IP:port". Эти методы реализуют интерфейс
net.Addr, что позволяет использовать UDPAddr
в функциях, ожидающих этот интерфейс.
Пример
Продемонстрируем работу методов Network и String:
package main
import (
"fmt"
"net"
)
func main() {
addr, _ := net.ResolveUDPAddr("udp4", "192.168.1.100:12345")
fmt.Println("Network:", addr.Network())
fmt.Println("String:", addr.String())
}
Результат выполнения кода:
"Network: udp4"
"String: 192.168.1.100:12345"
Смотрите также
-
тип
net.TCPAddr,
который представляет адрес TCP -
функцию
net.Dial,
которая устанавливает соединение по сети -
функцию
net.ListenPacket,
которая создает UDP-соединение для прослушивания -
тип
net.UDPConn,
который представляет UDP-соединение