Некоторые вопросы вокруг сокетов и принимаем ()

Допустим, мы создали сокет с ---- +: = 0 =: + ---- , затем мы использовали ---- +: = 1 =: + ---- и ---- +:= 2 =: + ---- .Затем мы используем ---- +: = 3 =: + ---- для ожидания клиентских запросов после подключения клиента, если мы выключаем сервер (например, мы нажимаем ctrl + c процесс).Клиент все еще подключен к порту?Можем ли мы как-нибудь восстановить соединение с сокетом?Это тоже проблема на стороне клиента?Или ---- +: = 4 =: + ---- ждут, пока кто-нибудь вернется к сокету?
4 голоса | спросил Makis Mandrelas 5 FebruaryEurope/MoscowbSun, 05 Feb 2017 04:07:32 +0300000000amSun, 05 Feb 2017 04:07:32 +030017 2017, 04:07:32

2 ответа


0
Я собираюсь предположить, что вы используете TCP.Если мы выключим сервер:Клиент все еще подключен к порту?Нет. Операционная система на стороне сервера заметит, что сервер завершен, и закроет соединение, отправив пакет клиенту, который завершает соединение.Даже если этого не произойдет (например, произойдет сбой в сети), соединение больше не будет использоваться, и в первый раз, когда клиент отправит что-либо, он поймет, что соединение было потеряно.Некоторые программы используют TCP Keep-Alive или отправляют сообщения пульса, чтобы убедиться, что они замечают, что сервер уходит.Можем ли мы как-нибудь восстановить соединение с сокетом?Нет. Клиенту необходимо установить новое соединение.Это тоже проблема на стороне клиента?Или recvfrom () ждет, когда кто-нибудь вернется к сокету?---- +: = 0 =: + ---- не ждет таким образом.Сервер не может «переподключиться» или «переподключиться» так, как вы подразумеваете.Клиенту необходимо будет отреагировать на отключение путем явного повторного подключения.
ответил John Zwinck 5 FebruaryEurope/MoscowbSun, 05 Feb 2017 04:13:12 +0300000000amSun, 05 Feb 2017 04:13:12 +030017 2017, 04:13:12
0
Клиент все еще подключен к порту?Клиент получит сброс соединения при чтении в Windows, EOS при чтении в * nix или сброс соединения при записи.Можем ли мы как-нибудь восстановить соединение с сокетом?В порт .Клиент может попытаться восстановить соединение, но это не будет успешным, пока сервер не будет запущен и прослушивает.Сервер не может ничего с этим поделать после перезагрузки.Является ли этот клиент проблемой на стороне клиента?Да, смотри выше.Или ---- +: = 0 =: + ---- ждут, пока кто-нибудь вернется к сокету?Конечно, нет.NB Вы должны использовать ---- +: = 1 =: + ---- для потоковых сокетов.Вам не нужна информация об адресе источника ---- +: = 2 =: + ---- дает вам, если это действительно так, потому что она уже доступна через ---- +: = 3 =: + ---- на розетке.
ответил user207421 5 FebruaryEurope/MoscowbSun, 05 Feb 2017 04:14:11 +0300000000amSun, 05 Feb 2017 04:14:11 +030017 2017, 04:14:11

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132