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
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a