Я должен проверить время ожидания соединения TCP в golang. Прямо сейчас это то, что я делаю для имитации времени ожидания соединения до сих пор,
socket, _ := syscall.Socket(syscall.AF_INET, syscall.SOCK_STREAM, 0)
_ = syscall.Bind(socket, &syscall.SockaddrInet4{
Port: 62433,
})
_ = syscall.Listen(socket, 1)
// Block new connection by running out the backlog
_, _ = net.Dial("tcp", "127.0.0.1:62433")
Идея состоит в том, чтобы принять только одно соединение в очереди, так что после одного соединения, когда другие клиенты пытаются соединиться с ним, будет получить тайм-аут. Этот подход работает в macOS, но не работает в среде Linux. Похоже, что в Linux значение backlog не соблюдается и позволяет подключаться нескольким клиентам.
Я пытаюсь найти способ получить больший контроль над изменением рукопожатия TCP. Поэтому я буду открывать и слушать порт, но добавлю пользовательскую задержку или лог c при выполнении рукопожатия с клиентом.