[Python] socket - questa me la dovete proprio spiegare..

allanon allanon a alaimo.org
Ven 27 Lug 2007 17:02:25 CEST


Thu 26 July 2007, alle 23:35 +0200, allanon ha scritto:
> Eccomi qua, con un altro quesito!
> 
> siccome sono niubbo il codice lo provo prima nell'interprete ide
> (quello che si lancia scrivendo python da console :p)
> 
> e allora scrivo questo codice qui
> 
> #!/usr/bin/python
> import sys
> from socket import *
> import re
> Host = 'localhost'
> Port = 5038
> s = socket(AF_INET, SOCK_STREAM)
> s.connect((Host, Port))
> s.send('Action: Login\r\nUserName: fop\r\nSecret: didodidodee\r\n\r\n')
> s.send('Action: Command\r\nCommand: Show Channels\r\n\r\n')
> data = s.recv(2048)                 # riceve fino a  2K bytes
> rawstr = r"""\d(?=.active channels)"""
> d=re.findall(rawstr,str(data))
> print "canali attivi "+str(d)
> 
> e funziona senza dire pio!
> mi ritorna
> 
> canali attivi 0
> 
> la variabile data e' la seguente
> >>> print data
> Asterisk Call Manager/1.0
> Response: Success
> Message: Authentication accepted
> 
> Response: Follows
> Privilege: Command
> Channel              Location             State   Application(Data)             
> 0 active channels
> >>> 
> 
> 
> 
> 
> Quanto invece lo stesso identico e medesimo codice frutto del copia e
> incolla piu' puro lo ficco dentro un file e lo eseguo..
> # ./prova-asterisk.py 
> canali attivi []
> 
> e la variabile data
> contiene soltanto
> 
> Asterisk Call Manager/1.0
> 
> 
> 
> secondo voi, come e' possibile che lo stesso codice ha un comportamento
> differente??
> 
> PS
> sono arcisicuro che mi manca qualche dettaglio essensiale,
> daltra parte non potrebbe essere altrimenti,
> pero stavolta sono propro curioso di sapere cosa e' 
> 


ghghghg, grazie ad un coder php abbiamo risolto!!
(lui dice che nel reference del php c'e' scritto!!!)
posto la soluzione per i posteri!

bisogna inserire un timer tra il send e il recv !!!

un qualcosa tipo 
s=socket..
s.send...
time.sleep(0.1)
s.recv..


Ciauz



-- 
  .''`.  |Utente Linux #370990 <--> jabber: allanonxx a jabber.org
 : :'  : |No al TC-Palladium! http://www.no1984.org/
 `. `'`  |GnuPG ID Key:(0x)A07FF2DB <-->  gpg --search-keys 0xA07FF2DB
   `-    |Fingerprint 3D2F DCD4 6AB3 9C52 995A  969E D634 02FF A07F F2DB


Maggiori informazioni sulla lista Python