Программирование сокета Python - PullRequest
0 голосов
/ 08 ноября 2018

моя программа имеет один сокет сервера и несколько сокетов клиента, Итак, что я хочу сделать, это Когда сервер закрывается (выключение), измените один из сокетов клиента на сокет сервера. Есть ли способ сделать это?

1 Ответ

0 голосов
/ 08 ноября 2018

что я хочу сделать - это когда сервер закрывается (выключается), измените один из клиентские сокеты к серверному сокету. Есть ли способ сделать это?

Нет - как только сокет TCP подключен, его можно использовать только для этого одного соединения TCP, а когда соединение TCP разорвано (например, при выходе сервера), все, что вы можете сделать с сокетом, близко. это.

Однако это не означает, что у вас не может быть системы чата с высокой доступностью, подобной той, которую вы представляете. Что вы можете сделать, это сделать так, чтобы ваши клиенты планировали заранее, собирая IP-адреса всех других клиентов заранее (либо через сервер, либо, если все клиенты находятся в одной локальной сети, возможно, через широковещательные или многоадресные UDP-пакеты). Таким образом, если / когда сервер отключается, у всех клиентов есть другой удобный IP-адрес, к которому они могут автоматически пытаться подключиться (используя новый сокет TCP).

Обратите внимание, что вам нужно убедиться, что программа, работающая с этим IP-адресом, принимает входящие TCP-соединения (в стиле сервера); Вы также можете указать какое-то правило, чтобы все клиенты повторно подключались к одному и тому же IP-адресу (например, сортируйте IP-адреса по номерам и все клиенты пытаются подключиться к наименьшему IP-адресу в списке или что-то вроде этого). что).

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