Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 25, 2008 23:31:42

Lam
От:
Зарегистрирован: 2008-12-20
Сообщения: 94
Репутация: +  0  -
Профиль   Отправить e-mail  

Сервер-клиент посредник

klient connect
select
start
1 1
error socket.error (32, 'Broken pipe')
select
start
любопытный результат, ничего вобщем то нового, сдается мне что какой то сок работает не коректо, очень медленная скорость выполнения, перед тем как появляются 1 1 проходит довольно не мало времени



Офлайн

#2 Дек. 25, 2008 23:32:58

Lam
От:
Зарегистрирован: 2008-12-20
Сообщения: 94
Репутация: +  0  -
Профиль   Отправить e-mail  

Сервер-клиент посредник

И тоже странно почему сначало передача с сервера идет а не с клиента…



Офлайн

#3 Дек. 25, 2008 23:42:02

Lam
От:
Зарегистрирован: 2008-12-20
Сообщения: 94
Репутация: +  0  -
Профиль   Отправить e-mail  

Сервер-клиент посредник

Хы щас поставил конект к s2 после того как присваиваю значение переменной conn результат тот же только уже нету socket.errog, возможно ошибка в не правильной постановке работы двух соков одновременно, а не в самой передаче данных?



Офлайн

#4 Дек. 25, 2008 23:46:52

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Сервер-клиент посредник

Lam
P.S. к оформлению кода просьба не придираться, просто на теле оно так луче выглядит легче понимать…
Прости, но он не читаем. Выполни в интерпретаторе `import this` и почитай то, что он тере напешет… Только там тоже “букавы” есть… :-)

Мой вариант move тесно завязан с settimout и поэтому тебе не очень подходит. Попробуй вариант Shiza, но замени 1024 на 1.

Lam
И тоже странно почему сначало передача с сервера идет а не с клиента…
А не всё ли равно? Возможно просто протокол так устроен.



Офлайн

#5 Дек. 26, 2008 00:11:35

Lam
От:
Зарегистрирован: 2008-12-20
Сообщения: 94
Репутация: +  0  -
Профиль   Отправить e-mail  

Сервер-клиент посредник

Да запарили я действительно неграмотный не будь т9 ваще бы фих че поняли)



Офлайн

#6 Дек. 26, 2008 00:40:18

Lam
От:
Зарегистрирован: 2008-12-20
Сообщения: 94
Репутация: +  0  -
Профиль   Отправить e-mail  

Сервер-клиент посредник

ZZZ
Мой вариант move тесно завязан с settimout и поэтому тебе не очень подходит. Попробуй вариант Shiza, но замени 1024 на 1.
на сколько тесно? Дело в том что recv(b) она принимает строку данных длиной не более b(это я всё книжке своей верю) и вобщем чтоб тогда организовать правильную передачу, прием выглядит примерно так(код взят с какой то сылки найденой в гугле):
 
while 1:
i = s1.recv(1)
if not i: break
i2 +=i
но тут у меня такой трейсбек появляется что мне страшно становится, может конечно опять измена), а с твоим вариантом у меня хоть что то делает, другие способы передачи хуже работают…



Офлайн

#7 Дек. 26, 2008 00:54:13

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Сервер-клиент посредник

Lam
уже нету socket.errog
Ошибка в последней букве.

Lam
на сколько тесно?
Офигительно тесно. :-)
Если i.recv(1) не может не может получить вожделенный байт (кстати, в одном байте восемь бит, а не четыре) на протяжении времени указанного в settimout, то генерируется исключение socket.error.
Вообще, можешь сделать setblocking(False)… Но тогда ты получишь нечто, что будет кушать весь процессор окончательно и бесповоротно. Как выход, можно поиграться с time.sleep, но тогда конструкция хорошо усложниться.

Lam
Да запарили я действительно неграмотный не будь т9 ваще бы фих че поняли)
И кому было бы хуже? :-)
Поговори с “мобильщиками” на счёт нормального инструментария, а то это и правда не очень в тему. Хотя бы правило четырёх отступов соблюдать надо.



Офлайн

#8 Дек. 26, 2008 00:57:19

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Сервер-клиент посредник

О! Я знаю! Попробуй так:

...
while k<20:
list1 = [conn, s2]
s3, s4, s5 = select.select(list1, [], [])
if not s3:
time.sleep(0.1)
continue

print 'select'
...
Не забудь где-нить в начале модуль time импортировать! А то с тебя сранется…



Отредактировано (Дек. 26, 2008 00:59:36)

Офлайн

#9 Дек. 26, 2008 02:31:16

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Сервер-клиент посредник

ZZZ
насчет размера пакета - так в доке написано:
“For best match with hardware and network realities, the value of bufsize should be a relatively small power of 2, for example, 4096. ”

“Now if you think about that a bit, you'll come to realize a fundamental truth of sockets: messages must either be fixed length (yuck), or be delimited (shrug), or indicate how long they are (much better), or end by shutting down the connection. The choice is entirely yours, (but some ways are righter than others).”



Отредактировано (Дек. 26, 2008 02:56:45)

Офлайн

#10 Дек. 26, 2008 08:40:29

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Сервер-клиент посредник

Может быть стоит посмотреть в сторону описания протокола icq? Может там что то проясниться?
P.S. 4 провела выставлять, набирая текст на смартфоне, не удобно, уж поверьте. И читать код с 4 пробелами тоже очень трудно :)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version