gpt4 book ai didi

python - 为什么不能绑定(bind)到 0.0.0.0 :80 and 192. 168.1.1 :80 simultaneously?

转载 作者:IT王子 更新时间:2023-10-29 00:24:09 27 4
gpt4 key购买 nike

我的python测试代码:

import socket

s1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s1.bind(('192.168.1.1', 80))
s1.listen(5)

s2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s2.bind(('0.0.0.0', 80))
s2.listen(5)

我遇到了这个错误:

fpemud-workstation test # ./test.py
Traceback (most recent call last):
File "./test.py", line 11, in <module>
s2.bind(('0.0.0.0', 80))
File "/usr/lib64/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 98] Address already in use

192.168.1.1是我的eth0接口(interface)的ip地址。
我认为 0.0.0.0:80 和 192.168.1.1:80 应该可以共存。
具有 dst-addr 192.168.1.1 的数据包进入套接字 s1,具有其他 dst-addr 的数据包进入套接字 s2。

最佳答案

您不能同时绑定(bind)到 0.0.0.0:80 和端口 80 上的任何其他 IP,因为 0.0.0.0 涵盖机器上存在的每个 IP,包括您的 192.168.1.1 地址。它并不表示“任何其他目标地址”,而是表示“此框上的所有接口(interface)”。

关于python - 为什么不能绑定(bind)到 0.0.0.0 :80 and 192. 168.1.1 :80 simultaneously?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17307779/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com