Может кто-то пожалуйста, как написать код неблокируемому сервера с использованием библиотеки сокета alone.Thanksнеблокирующем сервер в Python
ответ
Не уверен, что вы подразумеваете под «розеткой библиотеки только» - вы, конечно, потребуются другие модули из стандартной библиотеки Python.
Самый низкий уровень неблокирующего кода - select module. Это позволяет иметь много одновременных клиентских подключений и отчеты, из которых у них есть вход, ожидающий обработки. Таким образом, вы выбираете сокет сервера (accept), а также любые клиентские соединения, которые вы уже приняли. Тонким слоем поверх этого является асинхронный модуль.
Почему socket
? Это , поэтому гораздо проще использовать другой стандартный библиотечный модуль, asyncore
- и если вы не можете, то на очень наименее select
!
Если вы ограничены условием вашего домашнего задания, чтобы использовать только socket
, то я надеюсь, что вы можете по крайней мере добавить threading
(или multiprocessing
), в противном случае вы серьезно повезло - вы можете сделать розетки с timeout
, но жонглирование тайм-аутов сокетов без необходимой помощи любого из других очевидных стандартных библиотечных модулей (для поддержки async или резьбовой порции) является серьезным беспорядком, действительно-y ... ;-).
Честно говоря, просто не делайте (если это не упражнение). Twisted Framework сделает все, что связано с сетью, поэтому вам нужно написать только свой протокол, не заботясь о транспортном уровне. Написание кода сокета непросто, поэтому почему бы не использовать код, который кто-то еще написал и протестировал.
Используйте флажки или gevent. Эта обезьяна исправляет существующие библиотеки. модуль сокета может быть использован без каких-либо изменений. Хотя код появляется синхронно, он выполняется асинхронно.
Пример: http://eventlet.net/doc/examples.html#socket-connect
Действительно использовать витую, я однажды написал событие, библиотека на основе сокета себя, это боль в а ... Даже простые вещи, как проверка кастрированный баран соединение было закрыто клиентом или с помощью ошибка может вызвать у вас много неприятностей. Это определенно стоит того, если вы хотите много узнать о том, как работают сокеты, но это много проб и ошибок. –