Problemas con sockets

Luis Orellana Orihuela luis.ore.ori en gmail.com
Mie Mar 18 10:53:29 CET 2009


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.

-- 
Luis Orellana Orihuela
_______________________________________________
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