Re: reuse sokcet on Linux
От: ilnar Россия  
Дата: 27.09.11 08:03
Оценка:
Здравствуйте, 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. это должен делать предущих запусках, а не в текущем: т.о. всегда
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.