我有一个简单的套接字服务器设置,可以将一些数字发送给Intranet中的客户端。测试时,我停止终端( ctrl c (的server.py
脚本,该脚本后来在我尝试到达同一页面时在Safari中导致忙碌的服务器错误。
我看到了这个服务器错误问题,但问题是:
我找不到
/etc/init.d/networking restart
文件。我正在使用Mac,这是用于Linux。对于我测试服务器的每次,这也是一个过度杀伤。每小时至少10次。在代码中插入选项
SO_REUSEADDR
确实有助于Address already in use
,但我认为我的服务器已上升,但处于繁忙状态。使用此处的答案,我已经对此编辑了代码:
host = <my machine address>
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
port = 8080
s.bind((host, port))
我在服务器上会进行哪些更改以删除Safari中的此错误?
Safari 无法打开页面" my-ip",因为服务器意外地删除了连接。当服务器繁忙时,有时会发生这种情况。等待几分钟,然后再试一次。
lsof -i:8080
的输出,停止脚本后
python3.7 11881 <user> 3u IPv4 <Device> 0t0 TCP <my machine address>?:http-alt (LISTEN)
我做了kill 11881
,然后重新运行代码,但在Safari中获得了相同的消息。
netstat -na | grep "8080"
的输出是
tcp4 0 0 <my machine address>.8080 *.* LISTEN
当脚本运行时,当我 KeyboardInterrupt
时什么都没有。
firefox 暂时显示页面,然后显示错误页面
连接重置
chrome 仅显示一个空页面。
更新:它在Python 2.7中起作用,但在3.5中不起作用。代码的差异是:
c.send('n')
2.7和
c.send(bytes('n'.encode('utf-8')))
在3.5中
c
是
c, (client_host, client_port) = s.accept()
休息都是相同的。
我意外评论了一行
c.recv(1000)
问题中提到了c
。
当我将其与同一文件的较旧版本进行比较时,我发现了它。