简易ftp server搭建----获取主机IP地址

学习了基本的socket编程之后, 想要自己搭建一个ftp用于电脑之间的文件传输. 在尝试阅读RFC959协议被虐之后, 只能拿大神们的轮子来用, 就是这个东东pyftpdlib.


基本代码直接参考pyftpdlib文档即可, 在搭建过程中,遇到了一个小坑

关于主机IP地址的获取

方法一

import socket
def host_ip():
    ip = socket.gethostbyname(socket.gethostname())
    return ip

这个方法在mac上没有问题(mac貌似直接用gethostname()即可), 但是在win上(win10), 获取到的ip地址却是虚拟机的(ipconfig命令确认)

方法二

各种搜索之后, 找到了一个比较好的方法

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

    return ip

该方法生成一个UDP包, 尝试发包, 然后从中获取主机的IP地址. 没有其他依赖~~
(该方法参考来源: 东东东 陈煜东的博客)

你可能感兴趣的:(简易ftp server搭建----获取主机IP地址)