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

 

再次运行,问题解决

 

你可能感兴趣的:(网络编程,socket编程,Errno,99,python)