ciao, ho avuto poco tempo di testare, nel frattempo ho messo in piedi il server, e ho provato lo script per quanto riguarda la comunicazione di rete.
il codice è questo :
codice:
#!/usr/bin/python
import socket
import time
host = '192.168.0.10';
port_rec = 21568
port_send = 21568
buf = 1024
class connection:
def __init__(self, gui_instance):
self.s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
self.addr_rec = ('localhost',port_rec)
self.addr_send = (host, port_send)
self.s.bind(self.addr_rec)
self.s.settimeout(0.1)
self.gui_instance = gui_instance
# crea socket
# se ci sono dati da ricevere:
# self.OnDataReceived()
print "Server in ascolto : ", self.addr_rec
self.MainLoop()
def MainLoop(self):
start = time.time()
while 1:
data = ''
try:
data, addr = self.s.recvfrom(buf)
except socket.timeout:
pass
if data :
pass
if(time.time() > (start+5)):
self.send('Are you online?')
start = time.time()
def OnDataReceived(self):
self.gui_instance.OnMsgReceived()
def send(self, msg):
print "invio a :", self.addr_send," del messaggio :", msg
self.s.sendto(msg,self.addr_send)
self.s.sendto(msg,self.addr_send)
conn = connection('prova')
finchè facevo partire 2 script cosi, con le porte incrociate per simulare 2 pc funzionava correttamente.
Quando ho cambiato il valore di host nell'ip che vedi nel codice ricevo questo errore dopo i primi 5 secondi:
codice:
Server in ascolto : ('localhost', 21568)
invio a : ('192.168.0.10', 21568) del messaggio : Are you online?
Traceback (most recent call last):
File "./backup_server.py", line 49, in <module>
conn = connection('prova')
File "./backup_server.py", line 24, in __init__
self.MainLoop()
File "./backup_server.py", line 38, in MainLoop
self.send('Are you online?')
File "./backup_server.py", line 47, in send
self.s.sendto(msg,self.addr_send)
socket.error: (22, 'Invalid argument')
Dici che è un problema di python o qualcosa che ignoro?
Ho provato sia con la versione 2.4 che con la 2.5 su linux.
ciao