AntiGuide: UdpSwitchPythonTestChat



PagePrincipale :: DerniersChangements :: ParametresUtilisateur :: Vous êtes 216.73.216.92 :: Signaler un abus :: le: 20250720 07:52:53
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"