繁体   English   中英

套接字连接不会关闭?

[英]Socket connection won't close?

我试图编写一个简单的服务器程序来打印发送给它的数据,或者如果数据是“退出”,“退出”或“停止”,则退出:

HOST = ""
PORT = 37720

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((HOST, PORT))
server.listen(1)

while(1):
    conn, addr = server.accept()

    data = conn.recv(1024)
    if not data: break

    inData, inUrl = json.loads(data)

    if inData == "quit" or inData == "exit" or inData == "stop":
        print("Quitting")
        conn.close()
        break
    else:
        conn.send("Received")
        print(inData)

它符合我的期望,但是当我退出服务器后再次尝试运行服务器时,会得到:

Traceback (most recent call last):
  File "./s", line 14, in <module>
    server.bind((HOST, PORT))
  File "/usr/lib/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 98] Address already in use

我认为这意味着连接没有关闭。 如何关闭它以防止这种情况? 我尝试了conn.close() ,但是没有解决任何问题。

您需要设置SO_REUSEADDR标志。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM