Форум сайта python.su
0
Всем привет!
Имеем сервер и клиент.
Сервер и клиент обмениваются простейшими сообщениями запрос-ответ, соединение используется очень непродолжительное время.
Надо ли и на сервере и на клиенте выполнять метод close() экземпляров сокета по окончании обмена?
Или это достаточно сделать только на одной стороне?
Если необходимо выполнять на обеих сторонах, то надо ли как-то синхронизировать между собою очередность вызова этих методов на сервере и клиенте, проверять состояние сокета перед этим?
Офлайн
857
kolunaНадо вернуть объект в исходное состояние. Если что-то открывал, нужно это закрыть. Это связано не только с ресурсами, которые могут заниматься при открытии и освобождаться при закрытии, но и с алгоритмической точки зрения система не должна накапливать состояний, чтобы её можно было повторно использовать.
Надо ли и на сервере и на клиенте выполнять метод close() экземпляров сокета по окончании обмена?
Или это достаточно сделать только на одной стороне?
Отредактировано py.user.next (Сен. 16, 2014 22:03:59)
Офлайн
0
На стороне сервера и для объекта, возвращаемого socket.socket() и для объекта, возвращаемого socket.accept() необходимо вызвать close()?
В простейшем виде:
sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM) ... conn, addr = sck.accept() ... conn.close() sck.close()
Офлайн
857
Везде, где есть .close(), надо его вызывать при завершении работы с объектом.
Офлайн
0
По ошибкам еще есть вопросы.
Обрабатываю 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,’)
Подключение не установлено,
Офлайн
0
Поясните, пожалуйста, смысл параметра, передаваемого в socket.listen().
Читал документацию, но так и не понял до конца, что это за параметр.
Он ограничивает число клиентов, которые могут подключиться к серверу?
Офлайн