Найти - Пользователи
Полная версия: read=r.recv(1024) не пойму как сделать не блокирующем сокет :)?
Начало » Network » read=r.recv(1024) не пойму как сделать не блокирующем сокет :)?
1
metnek
Есть вобщем прога которая клиент она должна рубиться к серверу и говорить мне есть ли там ip или нету
если ip есть то нет проблем!
Она читает сокет и выводит мне результат!
Но если сокет пуст то клиент виснет чего мне как раз и не нужно:)!
Мне подсказали что нужно использовать не блокирующие сокеты уже битый час лазию по нету хотел найти инфу и ни че не нашел!:)
Знаю можно писать setblocking(0)
но ума не приложу где?
вот листинг:
import socket
HOST = ‘127.0.0.1’
PORT = 9000
s = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
s.connect
print “Server connecting…”

TEST = s.recv(1024)
if TEST==“”:
print “No packet”
else:
print “Packet complite”
s.close()
Подскажите где чу дописть Сэнкс з а р а н е е !!! :))))
Ed
Читайте здесь: http://docs.python.org/library/socket.html#socket.socket.setblocking
o7412369815963
Перед recv вызовите settimeout(3), если данных нет то recv вызовет ошибку говорящую об этом.
Таким образом прога не “повиснет”.

Так работают неблокирующие сокеты.
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