20131213
pour l'instant: un seul canal et une paire de jumeaux, en cas d'utilistation concurrente, résultat imprédictible!
les appareils s'appellent "pile" et "face"
switch.py
import sys, socket, datetime
# ecoute UDP port 7777 et reponse au mme port
port=7777
face=""
pile=""
noadd=("","")
pilead=noadd
facead=noadd
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(('',port))
print " Ecoute UDP port ", port," (frapper ^C pour abandonner)\n"
while 1:
(buf, address)=sock.recvfrom(2048)
print "===="+buf+"===="
done=0
if not len(buf):
break
# isoler destinataire
print address,buf
if (buf.find("pile:")==0):
facead=address
pile=pile + buf[5:]
sock.sendto(face, address)
if (pilead!=noadd):
sock.sendto(pile, pilead)
print "repondu:",face
face=""
pile=""
done=1
if (buf.find("face:")==0):
pilead=address
face=face + buf[5:]
sock.sendto(pile, address)
if (facead!=noadd):
sock.sendto(face, facead)
face=""
print "repondu: " ,pile
pile=""
done=1
if (done == 0):
sock.sendto("echo: "+buf, address)
print "never"
chat.py:
import sys, socket, datetime
# envoie unpaquet UDP au port 7777 d'une adresse WAN et attend reponse
port=7777
switch="flavigny.hd.free.fr"
text=""
i=0
for arg in sys.argv:
if (i>0):
text = text + arg
if (i==1):
text=text+":"
text=text+" "
i=i+1
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(('',port))
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST,1)
print datetime.datetime.now(),'"',text ,'" sent to: ' ,switch,":",port
sock.sendto(text, (switch, port))
print "Wait for answer on port:",port," (hit ^C to exit)\n"
while 1:
(buf, address)=sock.recvfrom(2048)
if (len(buf)>0):
print datetime.datetime.now(),"answer from IP: " , address,buf
print "never"