Справочная информация: У меня есть сервер socket
, который привязывается к определенному IP-адресу на сетевой карте компьютера.Это прекрасно работает ЕСЛИ NIC подключен к клиентскому компьютеру.Тем не менее, у меня возникают проблемы с сценарием ошибки, при котором, если сетевой адаптер не подключен к клиентскому компьютеру, он выдает следующую ошибку: «the requested address is not valid in its context
».Это имеет смысл, поскольку из-за отсутствия соединения IP-адрес не может быть назначен.
Проблема: Как я могу повторно связать socket
, чтобы после физического подключения сетевого адаптера кклиентская машина socket
начинает слушать?Обратите внимание, что когда я перезапускаю программу, она связывается правильно, и все в порядке.Тем не менее, я хочу иметь возможность перезапустить socket
/ re-bind без перезапуска программы.
Соединение с сокетом сервера : у меня уже есть код, при котором соединение вызывается каждый разX секунд, если определено, что сокет не связан (выполняется в фоновом режиме).Когда я вызываю метод переподключения (показанный ниже), я все равно получаю сообщение об ошибке.
var listeningSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
listeningSocket.SetSocketOptions(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
// exception thrown here if NIC is not physically connected
//
listeningSocket.Bind(new IPEndPoint(address, port));