![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
HRustBB |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 26.5.2009 Репутация: нет Всего: нет |
Пока только изучаю вопрос. С целью ознакомления с темой пишу север, который собственно ничего особенно не делает, просто принимает данные от клиента. Вот код
Не могу понять что тут не так, в IDLE запинается на строке except socket.error, errcode:. Кстати пример взял с wiki.linuxformat.ru |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 10 Всего: 173 |
На listen-сокете нельзя делать recv. На нём можно сделать только accept, который вернёт новый сокет, через который уже можно общаться с клиентом.
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
HRustBB |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 26.5.2009 Репутация: нет Всего: нет |
забыл уточнить: у меня python 3.1
в книжке Д.Откидач про acept() написано: accept() Принимает соединение и возвращает пару (conn, addr) где conn - новый объект сетевого соединения, подходящий для приема и посылки данных, addr - адрес другого конца сетевого соединения. Объект сетевого соединения, к которому применяется метод accept() должен быть привязан к адресу (метод bind) и ожидать соединения (метод listen). А если я в IDLE пишу accept без предварительно написанного listen, то разумеется имею ошибку: Traceback (most recent call last): File "<pyshell#6>", line 1, in <module> conn, addr = s.accept() File "C:\Python31\lib\socket.py", line 120, in accept fd, addr = self._accept() socket.error: [Errno 10022] Получен недопустимый аргумент Так вот. Может у кого нибудь есть хотябы пример сервера без блокировки. Это сообщение отредактировал(а) HRustBB - 27.7.2010, 21:30 |
|||
|
||||
Void |
|
||||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 10 Всего: 173 |
И, что не так? Ну вот пример, но он способен обрабатывать только одного клиента одновременно.
Для параллельных подключений нужно либо рожать обработчики в новых потоках, либо использовать select:
Это сообщение отредактировал(а) Void - 27.7.2010, 22:24 -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||
|
|||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Python: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |