socket.error: (10061, 'Connection refused')

Ernesto Revilla erny en sicem.biz
Dom Mayo 22 23:59:34 CEST 2005


qué es path[0]?
¿Pues imprimir eso, antes de  abrir el socket?

está claro que hay un connection refused, es decir, que algún host 
aludido no responde a las solicitudes del puerto 80.

Erny



Adrian Ferreres Esteller escribió:

> Hola lista:
>
> Primero quiero agradecer a todos por los consejos y ayudas que me 
> disteis con mis problemas con las expresiones regulares. He de decir, 
> con un poco de verguenza por mi parte, que el problema no lo tenia, 
> precisamente, en expresiones regulares sino en un nombre mal escrito 
> de una variable. Me explico:
>
>   Yo para compilar las expresiones regulares lo hacia de esta manera:
>
>      expr1="<h[1234]>.+</h1[1234]>"
>      expr2="<th .*>.+</th>"
>      expr3="<b>.+</b>"
>
>     mi_re1=re.compile (expr1)
>     mi_re2=re.compile (expr2)
>     mi_re3=re.compile (expr2)
>
>  Por eso mi programa me ignoraba las lineas con las etiquetas <b> y me 
> sacaba dos veces las etiquetas <th>. De todas formas, como muy bien me 
> explico Hernan Martinez, esta manera de manipular archivos html no es 
> muy buena y segura asi que tendre que seguir trabajando.
>
>   Ahora tengo otro problema que no se por donde pillar, tambien 
> relacionado con la araña web. Mi araña web final se compone de tres 
> programas:
>
>              el downloader.py
>              el reader.py
>              el sorter.py
>
>  El primero se encarga de bajarse las pagianas web. El segundo se 
> encarga de leer las paginas web descargadas y obtener los links. Y el 
> tercero se encarga leer las paginas almacenarlas en la base de datos. 
> Todos los programas funcionan con hilos y se comunican entre ellos 
> mediante sockets. El downloader recibe una direccion url de inicio que 
> se le pasa en la linea de comandos. Una vez almacenada en el disco 
> duro se pasa la ruta de directorios al reader y al sorter. El reader 
> crea un hilo por pagina que recibe que se encarga de obtener los 
> links, sacar la direccion url y enviarlas de nuevo al downloader que a 
> su vez crea un hilo por cada nueva url. El sorter crea un hilo por 
> cada pagina web descargada y las almacena en la base de datos.
>
> Pues bien, cada vez que ejecuto el downloader obtengo el siguiente 
> error: "socket.error: (10061, 'Connection refused')" y la verdad es 
> que no se porque. Os envio el codigo fuenta del programa a ver si 
> podeis hecharme una mano. Muchas gracias a todos
>
>
> import socket
> import sys
> from string import split
> from string import find
> import os
> import threading
>
>
> def almacenamiento (path):
>
>
>    direccion=path[0]+"/"
>    for i in xrange (len(path)-1):
>        direccion=direccion+path[i]+"/"
>
>    if not os.access (direccion,os.F_OK):
>        os.makedirs (direccion)
>
>    if (len(path)==1) or (path[1]=="") :
>        direccion=direccion+"index.htm"
>    else:
>        direccion=direccion+path[len(path)-1]
>
>    return direccion
>
>
> def dir_web (path):
>
>
>    if (len(path)==1) or (path[1]==""):
>       s= socket.socket (socket.AF_INET, socket.SOCK_STREAM)
>       s.connect ((path[0], 80))
>       HTTP_request="GET /index.htm HTTP/1.0\r\n\r\n"
>
>       if (s.send(HTTP_request)):
>           web_add="/index.htm"
>       else:
>           web_add="/index.html"
>
>       s.close ()
>    else:
>        web_add="";
>
>        for i in xrange (1,len(path)):
>            web_add=web_add+"/"+path[i]
>
>    return web_add
>
> def download (direccion, web_add, host, port):
>
>     print "Descargando del host: ",host
>     s= socket.socket (socket.AF_INET, socket.SOCK_STREAM)
>     s.connect ((host,port))
>
>     HTTP_request="GET "+web_add+" HTTP/1.0\r\n\r\n"
>     s.send (HTTP_request)
>
>     print "Almacenando pagina en la direccion: ",direccion
>     fn= open (direccion,'w')
>     fin_cabecera=False
>     respuesta=s.recv(1024)
>
>     while respuesta:
>         if fin_cabecera:
>             fn.write (respuesta)
>         else:
>             fin=find (respuesta,"\r\n\r\n")
>             if fin!=-1:
>                 fn.write (respuesta[fin+4])
>                 fin_cabecera=True
>      respuesta=s.recv(1024)
>
>     s.close ()
>     fn.close ()
>
> class descarga (threading.Thread):
>
>    def __init__ (self,conexion, cliente):
>
>        threading.Thread.__init__ (self)
>        self.conexion=conexion
>        self.cliente= cliente
>
>
>    def run (self):
>
>        path=self.conexion.recv(1024)
>        path=path[7:]
>        path=split ('/',path)
>
>     self.conexion.close()
>
>        direccion= almacenamiento (path)
>        web_addr=dir_web (path)
>        download (direccion,web_addr,path[0],80)
>
>     s= socket.socket (socket.AF_INET, socket.SOCK_STREAM)
>     s.connect (("localhost",8080))
>        s.send (direccion)
>        s.close ()
>        s.connect (("localhost",8081))
>        s.send (direccion)
>        s.close ()
>
>
>
>
>
> host="localhost"
> port=8080
>
> path= sys.argv[1]
> path= path[7:]
> path= split (path,'/')
>
> print path[0]
> direccion= almacenamiento (path)
> web_addr=dir_web (path)
> download (direccion,web_addr,path[0],80)
>
> s= socket.socket (socket.AF_INET, socket.SOCK_STREAM)
> s.connect ((host,port))
> s.send (direccion)
> s.close ()
> s.connect ((host,8081))
> s.send (direccion)
> s.close ()
>
> s.bind ((socket.gethostname (), 8082))
> s.listen (100)
>
> while (1):
>
>    (conexion,cliente)= s.accept ()
>    print "Se ha conectado otro cliente"
>
>    dc= descarga (conexion,cliente)
>    dc.start()
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
>


-- 
=========================================
    NO A LAS PATENTES DE SOFTWARE
    http://proinnova.hispalinux.es
=========================================

Ernesto Revilla
sicem sl
Pol. Ind. Juncaril, c/ Loja Parc. 7 Local 13
18220 Albolote
http://www.sicem.biz
Tel: 637 716189
MSN: aerd en mx3.redestb.es
ICQ: 163888521



---
avast! Antivirus: Saliente mensaje limpio.
Base de datos de Virus (VPS): 0520-4, 20/05/2005
Comprobado en: 22/05/2005 23:59:36
avast! tiene los derechos reservados (c) 2000-2004 ALWIL Software.
http://www.avast.com




Más información sobre la lista de distribución Python-es