[Python] problema con socket (lettura blocking)
Vittorio Spina
vittorio.spina a gmail.com
Ven 4 Ott 2013 17:33:56 CEST
Ciao a tutti.
Ho scritto un programma che riceve dati da un Laser con interfaccia
Ethernet.
il programma riassumento ha la seguente forma:
from socket import *
import config
s = socket(AF_INET,SOCK_STREAM)
s.connect((config.IP, config.PORT))
while 1:
if s.recv(1)=="\xAA":
letturaNumero = s.recv(1)
quando lancio il codice noto che letturaNumero identifica un numero
progressivo.
E' come insomma se il device stesse ad aspettarmi fino alla lettura
successiva, cosa che io non voglio poichè i dati sono tanti e poi mi
ritrovo con una sorta di macchina del passato.
Se invece faccio come segue
while 1:
s = socket(AF_INET,SOCK_STREAM)
s.connect((config.IP, config.PORT))
if s.recv(1)=="\xAA":
letturaNumero = s.recv(1)
e cioè apro e chiudo di continuo il socket, tutto funziona come vorrei.
Ma l'operazione di apertura e chiusira del socket è in effetti una cosa
pensante.
C'è un modo per dire al socket di aprire una connessione e che il device
non stia ad aspettarmi?
Grazie.
p.s
usando il comando
s.setblocking(0)
ricevo l'errore:
[Errno 10035] Impossibile completare immediatamente l'operazione sul
socket non a blocchi
Maggiori informazioni sulla lista
Python