python socket编程在阿里云的esc服务器下 [Errno 99] Cannot assign requested address解决方式
初识python socket网络编程,在阿里云的esc里面实际测试的时候,发现报了这个错误
[Errno 99] Cannot assign requested address
那么就是愉快的排错过程:
查了查网上的方案:
#修改/etc/hosts文件
vim /etc/hosts
将如下内容修改
127.0.0.1 localhost
修改为
127.0.1.1 your hostname #此处的填hostname,记住必须与/etc/hostname中的名字一致!
然后,愉快的报错了
接下来修改/etc/hosts的对应关系如下
39.106.105.70 Ubuntu #39.106.105.70是我的阿里云ESC服务器的外网
然后就OK了,想啥呢,又报错了,再次尝试如下解决方案(假装看不见报错)
while True:
try:# 抓取OSError: [Errno 99] Cannot assign requested address 异常
tcpOrder_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#强制允许端口复用
tcpOrder_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,1)
locall_addr = ("", 7890)
# 绑定本地信息
tcpOrder_socket.bind(locall_addr)
#print(tcpOrder_socket)
tcpOrder_socket.connect((server_ip, int(server_port)))
choice_num = input("请输入操作代码:")
except Exception as link_fault:
continue
查了ESC的网卡信息,发现这样一个问题,127.0.0.1对应本地,而ifconfig后显示他的内网IP是17开头,
在它的生产环境中,必定存在内网ip和外网对应关系(虽然不知道怎么对应)
接下来就好办了,再次修改对应关系
内网IP Ubuntu #Ubuntu是我的主机名,你的用hostname查看
补充: 代码绑定的IP也必须是内网IP
再次运行,问题解决