Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Network
  • » read=r.recv(1024) не пойму как сделать не блокирующем сокет :)? [RSS Feed]

#1 Янв. 29, 2011 20:29:06

metnek
От:
Зарегистрирован: 2010-11-15
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

read=r.recv(1024) не пойму как сделать не блокирующем сокет :)?

Есть вобщем прога которая клиент она должна рубиться к серверу и говорить мне есть ли там 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()
Подскажите где чу дописть Сэнкс з а р а н е е !!! :))))



Отредактировано (Янв. 29, 2011 20:30:21)

Офлайн

#2 Янв. 29, 2011 21:31:49

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

read=r.recv(1024) не пойму как сделать не блокирующем сокет :)?

Офлайн

#3 Янв. 30, 2011 14:33:25

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

read=r.recv(1024) не пойму как сделать не блокирующем сокет :)?

Перед recv вызовите settimeout(3), если данных нет то recv вызовет ошибку говорящую об этом.
Таким образом прога не “повиснет”.

Так работают неблокирующие сокеты.

Офлайн

  • Начало
  • » Network
  • » read=r.recv(1024) не пойму как сделать не блокирующем сокет :)?[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version