Problemas con sockets

Xavier Barnada xbarnada en gmail.com
Mie Mar 18 12:43:15 CET 2009


El Wednesday 18 March 2009 10:53:29 Luis Orellana Orihuela escribió:
> Buenos días lista,
>
> tengo una pequeña aplicación que actúa de servidor escuchando por un puerto
> determinado la llegada de sockets de un cliente. El cliente envía datos, el
> servidor responde y ambos cierran la conexión (primero un sock.shutdown(1)
> y luego un sock.close()). Se termina la comunicación y se cierran ambos
> programas. hasta ahí todo bien, el problema  viene si seguidamente vuelvo a
> ejecutar el servidor usando el mismo puerto de escucha, el interprete me
> lanza la siguiente excepción:
>
> File "<string>", line 1, in bind
> socket.error: (98, 'Address already in use')
>
> Es como si el puerto estubiera ocupado, sin embargo si hago un fuser
> 7777/tcp (donde 7777 es el número del puerto) no me devuelve nada. Al cabo
> de los minutos parece ser que deja de estar en uso el puerto y puedo volver
> a ejecutar el servidor. Googleando he encontrado una descripción del
> posible problema:
> http://hea-www.harvard.edu/~fine/Tech/addrinuse.html<http://hea-www.harvard
>.edu/%7Efine/Tech/addrinuse.html>y que dan solución añadiendo la línea:
>
> sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
>
> pero al añadirla me salta el siguiente error:
>
> AttributeError: type object '_socketobject' has no attribute 'SOL_SOCKET'
> si importo tal que así: from socket import *
>
> o bien :
>
> NameError: global name 'AF_INET' is not defined  (a la hora de crear el
> socket) si importo así: import socket
>
>
> A ver si pueden ayudarme, Gracias.
Yo diria que esto te pasa porque no se cierra el socket, puedes consultar el 
estado de las conexiones con el comando netstat -a --inet.Lo que no se es el 
porque ya que no conozco como trabajan los sockets en python
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





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