[PIPython] leggere linee su socket

Paolo Mossino mox79
Ven 19 Nov 2004 15:16:49 CET


Cris. Lor. wrote:
> esistono altri server su coi potrei provare lo scriptcosì come sta?
> per ora non volevo usare l'HTTPlib perche non mi interessava accedere ad un
> url, volevo solo "leggere" come fosse un txt da una porta di un server..
> In teoria pensavo che con questo script dovrei essere anche in grado di
> leggere da un'altra porta ad esempio quella web di google.it
> 216.239.39.104:80 ed ottenere almeno qualche linea di risposta. Non è mia
> intenzione comunicare via http.. ma solo leggere le prime linee di testo
> acessibili su quel servizio. Qualunque risposta sia...
> Non puo funzionare così?

Dovresti prima avere qualche nozione del protocollo a cui ti colleghi: in 
particolare l'HTTP è un protocollo testuale che prevede l'inizio da parte 
del client.
Quindi cosi' come l'hai fatto non potrebbe funzionare funziona.

Il protocollo daytime invece credo preveda semplicemente la stampa di data e 
ora appena viene connesso il socket e poi la chiusura della connessione.


> Il Time server dell'esempio (206.168.112.96:13) pensavo fosse lasciato
> sempre attivo per aiutare tutti quelli che studiano su quel libro, se metto
> nel browser 206.168.112.96:80 ottengo comunque una pagina di risposta quindi
> il server c'è solo che il servizio non sarà piu attivo sivede...

Non si tengono servizi attivi che non siano FONDAMENTALI.

> Non so usare un compilatore C quindi non ho modo di provare la versione in
> C, poi in tal caso dovrei postarvi anche i file header ecc.. quindi lasciamo
> perdere..

Senza fare troppa fatica (ovviamente l'ho fatto su una macchina Unix che 
aveva daytime attivo):

<code>
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.connect( ('127.0.0.1', 13) )

while True:
     r = s.recv(8192)
     if not r:
         break
     print r

s.close()
</code>


Provando qualcosa che non avevo ancora provato prima:

<code>
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect( ('127.0.0.1', 13) )
f = s.makefile()

for line in s:
     print line.replace('\n', '')

f.close()
s.close()
</code>


-- 
  ,___,    ~ Paolo Mossino  (Alexander)         e-m a il: mox79 a gmx.it ~
  (0v0)    ~ Jabber ID : alexander a jabber.linux.it - ICQ #: 28473944 ~
  (_^((\   ~ "My crime is judging people by what they say and think, ~
  -"-"-\\  ~ not what they look like"          [Mentor's Last Words] ~



More information about the Python mailing list