前言

在项目中使用 Python UDP,绑定时需要用到 IP 何端口,开始使用 socket.gethostbyname()时,当计算机名为中文时会提示,结果发现就是转码问题

socket.gaierror:[Errno11004]getaddrinfo failed

解决如下

方式一:转码后比较推荐

import  socket
#获取本机电脑名
myname  =  socket.getfqdn(socket.gethostname())
#获取本机 ip,记住要转码中文问题
myaddr  =  socket.gethostbyname(myname.decode("utf-8"))

方式二:(注意 dns 设置)

import socket

def getIp():
   try:
      s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
      s.connect(('8.8.8.8', 80))
      ip = s.getsockname()[0]
  finally:
      s.close()
  return ip

if __name__ == '__main__':
  print(getIp())