Функция net.DialTimeout
Функция net.DialTimeout устанавливает сетевое соединение
с указанным таймаутом. В отличие от net.Dial, она
позволяет ограничить время ожидания подключения. В первый
параметр передается тип сети ("tcp", "udp", "unix" и т.д.),
во второй параметр передается адрес для подключения
(например "localhost:8080"), а в третий параметр передается
продолжительность таймаута. Если соединение не установлено
за указанное время, функция возвращает ошибку.
Синтаксис
net.DialTimeout(network, address, timeout)
Пример
Давайте попробуем подключиться к локальному серверу с таймаутом в 2 секунды:
package main
import (
"fmt"
"net"
"time"
)
func main() {
conn, err := net.DialTimeout("tcp", "localhost:8080", 2*time.Second)
if err != nil {
fmt.Println(err)
return
}
defer conn.Close()
fmt.Println("connected successfully")
}
Результат выполнения кода при успешном подключении:
"connected successfully"
Пример
Попробуем подключиться к недоступному хосту с таймаутом в 1 секунду:
package main
import (
"fmt"
"net"
"time"
)
func main() {
conn, err := net.DialTimeout("tcp", "192.0.2.1:80", 1*time.Second)
if err != nil {
fmt.Println(err)
return
}
defer conn.Close()
fmt.Println("connected successfully")
}
Результат выполнения кода:
"dial tcp 192.0.2.1:80: i/o timeout"
Пример
Используем таймаут с UDP подключением:
package main
import (
"fmt"
"net"
"time"
)
func main() {
conn, err := net.DialTimeout("udp", "8.8.8.8:53", 3*time.Second)
if err != nil {
fmt.Println(err)
return
}
defer conn.Close()
fmt.Println("udp connection established")
}
Результат выполнения кода:
"udp connection established"
Смотрите также
-
функцию
net.Dial,
которая устанавливает соединение без ограничения по времени -
функцию
net.Listen,
которая создает сетевой слушатель для входящих подключений -
тип
net.Dialer,
который предоставляет более гибкую настройку подключений -
тип
net.Conn,
представляющий сетевое соединение для чтения и записи данных