简易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地址. 没有其他依赖~~
(该方法参考来源: 东东东 陈煜东的博客)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 0. 介绍 本文源自《图解TCP/IP》第四、五章读书笔记。一篇文章让你了解IP协议。阅读的时候,注意一般知识点结...
    天才木木阅读 10,685评论 0 14
  • 名词延伸 通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。如果把IP地址比作一间房子...
    杨大虾阅读 20,715评论 2 56
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,511评论 25 709
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 10,494评论 0 8
  • 世事翻云覆雨,正是因为懂得你的难处, 方能与你并肩而立,共看沧海变桑田。 人活一辈子,遇见的人太多太多,可最终真正...
    郭峰麟阅读 1,459评论 0 3

友情链接更多精彩内容