Тип net.TCPAddr

Тип net.TCPAddr представляет собой TCP-адрес в пакете net. Он содержит два основных поля: IP и Port. Поле IP имеет тип net.IP и хранит IP-адрес в виде байтового среза, а поле Port имеет тип int и хранит номер порта. Тип реализует интерфейс net.Addr, предоставляя методы Network и String.

Структура TCPAddr

gotype TCPAddr struct {
  IP   IP
  Port int
}

Создание TCPAddr с помощью ResolveTCPAddr

Для создания net.TCPAddr из строкового представления адреса используется функция net.ResolveTCPAddr. Она принимает два аргумента: сеть (например, "tcp") и строку с адресом. Строка может содержать IP-адрес и порт в форматах "ip:port" или "[ipv6]:port". Если адрес не содержит порта, он будет равен 0.

gopackage main

import (
  "fmt"
  "net"
)

func main() {
  addr, err := net.ResolveTCPAddr("tcp", "127.0.0.1:8080")
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Printf("IP: %s, Port: %d\n", addr.IP, addr.Port)
}

Результат выполнения кода:

go"IP: 127.0.0.1, Port: 8080"

Создание TCPAddr вручную

Вы можете создать экземпляр net.TCPAddr вручную, используя литерал структуры. Поле IP принимает значение типа net.IP, которое можно получить с помощью net.ParseIP.

gopackage main

import (
  "fmt"
  "net"
)

func main() {
  addr := &net.TCPAddr{
    IP:   net.ParseIP("192.168.1.1"),
    Port: 443,
  }
  fmt.Printf("IP: %s, Port: %d\n", addr.IP, addr.Port)
}

Результат выполнения кода:

go"IP: 192.168.1.1, Port: 443"

Метод Network

Метод Network возвращает имя сети, которое всегда равно "tcp", "tcp4" или "tcp6". Этот метод необходим для реализации интерфейса net.Addr.

gopackage main

import (
  "fmt"
  "net"
)

func main() {
  addr := &net.TCPAddr{
    IP:   net.ParseIP("192.168.1.1"),
    Port: 443,
  }
  fmt.Println(addr.Network())
}

Результат выполнения кода:

go"tcp"

Метод String

Метод String возвращает строковое представление адреса в формате "ip:port". Для IPv6 адресов вывод будет в формате "[ipv6]:port". Этот метод также является частью интерфейса net.Addr.

gopackage main

import (
  "fmt"
  "net"
)

func main() {
  addr := &net.TCPAddr{
    IP:   net.ParseIP("192.168.1.1"),
    Port: 443,
  }
  fmt.Println(addr.String())
}

Результат выполнения кода:

go"192.168.1.1:443"

Смотрите также

  • тип net.TCPConn,
    который представляет TCP-соединение
  • функцию net.Dial,
    которая устанавливает соединение по указанному адресу
  • функцию net.Listen,
    которая создает слушателя на указанном TCP-адресе
  • функцию net.SplitHostPort,
    которая разделяет строку адреса на хост и порт