Девелоперское-3

Oct 04, 2009 06:38

За-ши-бись. То понос, то золотуха... Любуйтесь!!!



Вот и как с этим жить, а? :-(
Да, понятно, что оно основано на Python 2.2.2, а в нем нет метода settimeout.
ОК, делаем как положено. Запускаем connect_ex... Получаем error: Not implemented feature.
Уже весело, да? Не проверишь, что там тебе после connect’а вернулось.
Ладно. Обычный connect, оборачиваем в try/except... Ставим сокету тип nonblocking [метод setblocking(0)], делаем recv... Жуй. По нулям. «Хозяин, мне ничО не пришло!»
О как. setblocking(1) - всё в порядке, приходит строчка.
После вызова connect втыкаем time.sleep(5), рвём на стороне сервера коннект, после этого вызывается recv. Должен был exception выдать... А фиг там!!!
Нет, я оберну вызовы connect, send и recv в свой метод с блэкджеком и шлюхами проверкой на таймауты, но - мля!
«Доктор, как-то неаккуратненько…»
Тьфу, с-с-собака...

UPD: Ну вот примерно так, да. Актуально только для S60 Python:

def trecv(sock, timeout):
sclose = lambda : sock.close()
wait = e32.Ao_timer()
wait.after(timeout, sclose)
buffer = sock.recv()
wait.cancel()
return buffer

omfg, dev

Previous post Next post
Up