[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