2010-05-04 94 views
3

我有一个简单的服务器/客户端。我使用netcat作为客户端来测试服务器。如果我停止客户端退出之前的服务器,我将无法再次启动服务器了一会儿,我去这个错误: “ [错误98]地址已在使用 ”在Python 2.6中关闭套接字的正确方法是什么?

,但如果我收首先客户端,然后服务器停止,我不会有这个问题。

我的服务器套接字是这样工作的:

try: 
    s=socket 
    s.bind(..) 
    s.listen(1) 
    conn,addr=s.accept() 
finally: 
    conn.close() 
    s.close() 

感觉对我来说,服务器没有正确关闭套接字。但我不知道如何解决这个问题。

回答

9

你正在关闭套接字。但是,在套接字关闭后,套接字将继续使用资源几分钟,以便如果远程端错过了一个数据包,则可以重新发送数据包。

您应该能够通过调用下面来解决它,你打电话之前bind

s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 

会告诉你要允许插座的多个绑定操作系统。

相关问题