python-3.x - 如何重用套接字地址python?

标签 python-3.x python-2.7 sockets tcp client-server

服务器端代码:

import socket
import sys

HOST = ''   # Symbolic name, meaning all available interfaces
PORT = 7800 # Arbitrary non-privileged port

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print ('Socket created')

#Bind socket to local host and port
try:
    s.bind((HOST, PORT))
except socket.error as msg:
    print ('Bind failed. Error Code : ' + str(msg[0]) + ' Message ' + msg[1])
    sys.exit()

print 'Socket bind complete'

#Start listening on socket
s.listen(10)
print ('Socket now listening')

#now keep talking with the client
while 1:
    #wait to accept a connection - blocking call
    conn, addr = s.accept()
    print ('Connected with ' + addr[0] + ':' + str(addr[1]))
    msg = conn.recv(1024)
s.close()

每当我第一次使用此代码时,我都可以轻松地与客户端连接,第二次后我收到错误“每个套接字地址(协议(protocol)/网络地址/端口)通常只允许一次使用”

我怎样才能修改代码使其反复运行?

最佳答案

创建 s 后尝试这一行:

# ...
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

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

Socket options SO_REUSEADDR and SO_REUSEPORT, how do they differ? Do they mean the same across all major operating systems?

关于python-3.x - 如何重用套接字地址python?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47958473/

相关文章:

python - 如何在 Tkinter 中将二维数组从一个类传递到另一个类?

c++ - 需要使用Winsock和recv判断下载的字节数

php - 用于 PHP 的 L-Soft LISTSERV TCPGUI 界面

sql-server - MS SQL Connect 给出错误 mssql : A SQL editor must have focus

python - 在 Ubuntu 13.04 上编译 MySQL Workbench

python - 素数函数

python - 为最短的执行时间重新安排任务

java - 为 SSL 套接字上的每个请求创建新进程给出 "TypeError: Cannot serialize socket object",但对普通/非 SSL 套接字做同样的工作

python - 如何将 CHATBOT 未回答的问题存储在文本文件中

python - 获取两个整数列表并创建类型列表对的更快方法