Функция net.Listen

Функция net.Listen используется для создания сетевого слушателя, который ожидает входящие соединения по указанному протоколу и адресу. В первый параметр передается строка с сетевым протоколом (например, "tcp", "udp", "unix"), во второй параметр передается адрес в формате "host:port" или путь для Unix-сокетов. Функция возвращает два значения: объект интерфейса net.Listener и ошибку error, которая будет не nil в случае неудачи.

Синтаксис

goln, err := net.Listen(network, address)

Пример

Давайте создадим TCP-слушатель на локальном порту 8080:

gopackage main

import (
  "fmt"
  "net"
)

func main() {
  ln, err := net.Listen("tcp", "127.0.0.1:8080")
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  defer ln.Close()

  fmt.Println("Listening on", ln.Addr())
}

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

goListening on 127.0.0.1:8080

Пример

Теперь создадим UDP-слушатель на порту 8081:

gopackage main

import (
  "fmt"
  "net"
)

func main() {
  ln, err := net.Listen("udp", "0.0.0.0:8081")
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  defer ln.Close()

  fmt.Println("UDP listening on", ln.Addr())
}

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

goUDP listening on 0.0.0.0:8081

Пример

Для Unix-сокетов можно указать путь к файлу:

gopackage main

import (
  "fmt"
  "net"
)

func main() {
  ln, err := net.Listen("unix", "/tmp/unix.sock")
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  defer ln.Close()

  fmt.Println("Unix listening on", ln.Addr())
}

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

goUnix listening on /tmp/unix.sock

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

  • функцию net.Dial,
    которая используется для установки соединения с удаленным хостом
  • функцию net.DialTimeout,
    которая устанавливает соединение с таймаутом
  • интерфейс net.Listener,
    который определяет методы для управления слушателем
  • функцию http.ListenAndServe,
    которая упрощает запуск HTTP-сервера