Найти - Пользователи
Полная версия: Работа с модулем socket
Начало » Python для новичков » Работа с модулем socket
1
koluna
Всем привет!

Имеем сервер и клиент.
Сервер и клиент обмениваются простейшими сообщениями запрос-ответ, соединение используется очень непродолжительное время.
Надо ли и на сервере и на клиенте выполнять метод close() экземпляров сокета по окончании обмена?
Или это достаточно сделать только на одной стороне?
Если необходимо выполнять на обеих сторонах, то надо ли как-то синхронизировать между собою очередность вызова этих методов на сервере и клиенте, проверять состояние сокета перед этим?
py.user.next
koluna
Надо ли и на сервере и на клиенте выполнять метод close() экземпляров сокета по окончании обмена?
Или это достаточно сделать только на одной стороне?
Надо вернуть объект в исходное состояние. Если что-то открывал, нужно это закрыть. Это связано не только с ресурсами, которые могут заниматься при открытии и освобождаться при закрытии, но и с алгоритмической точки зрения система не должна накапливать состояний, чтобы её можно было повторно использовать.
koluna
На стороне сервера и для объекта, возвращаемого socket.socket() и для объекта, возвращаемого socket.accept() необходимо вызвать close()?

В простейшем виде:
sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
...
conn, addr = sck.accept()
...
conn.close()
sck.close()
py.user.next
Везде, где есть .close(), надо его вызывать при завершении работы с объектом.
koluna
По ошибкам еще есть вопросы.
Обрабатываю socket.error, в ответ приходит кортеж: первый элемент - номер ошибки, второй - строка с описанием. Такое ощущение, что строка с описанием приходит какая-то обрезанная. Или запятая лишняя…

Сам кортеж, распечатанный print:
(10061, ‘\xcf\xee\xe4\xea\xeb\xfe\xf7\xe5\xed\xe8\xe5 \xed\xe5 \xf3\xf1\xf2\xe0\xed\xee\xe2\xeb\xe5\xed\xee,’)

А вот строка из кортежа:
Подключение не установлено,

Кстати, часть строк описаний приходит на русском, часть - на английском. Можно ли сделать, чтобы все строки были на одном языке?
Где вообще эти строки перечислены?
koluna
Поясните, пожалуйста, смысл параметра, передаваемого в socket.listen().
Читал документацию, но так и не понял до конца, что это за параметр.
Он ограничивает число клиентов, которые могут подключиться к серверу?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB