Найти - Пользователи
Полная версия: s.recv(1024) как сделать чтоббы программа не висела если сокет пуст?
Начало » Network » s.recv(1024) как сделать чтоббы программа не висела если сокет пуст?
1
metnek
Вот к примеру
конечусь на порт 9100
и пытаюсь прочитать
text=s.recv(1024)
а на той стороне
если есть хоть что нить то он его прочитает и вывидет мне на экран
print (text)
но что делать если сокет пуст?
Если при этом клиент висит ожидая ответа что нужно дописать чтобы клиент продолжал работу!
Суть такова клиент подрубился если на серваке нету слово гуд то тогда он мне соощает что слова нет и я завершил работу а если есть то пишет что слово гуд есть?
спс всем! :)))
Eliont
Использовать неблокирующие сокеты.
Тогда при чтении прога не повиснет, а сгенерирует исключение которое можно перехватить и либо заигнорить либо повесить собственный обработчик.
metnek
Eliont
Использовать неблокирующие сокеты.
Тогда при чтении прога не повиснет, а сгенерирует исключение которое можно перехватить и либо заигнорить либо повесить собственный обработчик.
Подскажите как ? Всмысле что я должен вписать! Плиз :)
Eliont
Сокет делается неблокирующим методом .setblocking(0)

После этого обрабатывать надо примерно так:

        try:
sock, addr = socket_object.accept()
connect = True
except socket.error:
connect = False
continue
Покури руководства: http://www.intuit.ru/department/pl/python/9/,
потом посмотри мой старый курсовик: http://dl.dropbox.com/u/11931230/ouvs_cource_work_report.doc
И ещё соседнюю темку: http://python.su/forum/viewtopic.php?id=10108
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB