Имитация медленного TCP 3-х стороннего рукопожатия - PullRequest
1 голос
/ 06 февраля 2020

Я должен проверить время ожидания соединения 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 при выполнении рукопожатия с клиентом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...