Здравствуйте, maks1180, Вы писали:
M>1) на компе 1 (ОС — CentOS) программа открывает сокет 443 через bind() listen() M>2) с компа 2 подсоединяюсь через telnet к открытому сокету 443 M>3) на компе 1 закрываю приложение M>4) на компе 1 "netstat -an -t | grep 443" вижу соединение к компу 2 вот так "tcp 0 0 192.168.220.129:443 192.168.220.1:2591 TIME_WAIT" M>5) перезапускаю на компе 1 свое приложение, оно делает
M>::socket(AF_INET, SOCK_STREAM, 0); M>int optval = 1; M>::setsockopt(m_socket, SOL_SOCKET, SO_REUSEPORT, &optval, sizeof(optval)); M>::setsockopt(m_socket, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval));
M>::bind(m_socket, (sockaddr*) &addr, sizeof(addr)); -> вот здесть получаю ошибку 98, т.е. EADDRINUSE.
M>В чем дело ? что не так, почему REUSEADDR & REUSEPORT не помогают ?
1. достаточно SO_REUSEADDR
2. это должен делать предущих запусках, а не в текущем: т.о. всегда