首页 > 代码库 > Linux——获取IP及其中发现的问题
Linux——获取IP及其中发现的问题
由于最近在学习网络编程,喜欢玩弄IP地址。
首先,我需要搞清楚如何获得本机IP。
1、利用Linux系统
在bash中输入ifconfig可获得以下代码:
(ev1)[root@Simonxu bin]# ifconfiglo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:8647 errors:0 dropped:0 overruns:0 frame:0 TX packets:8647 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1768577 (1.6 MiB) TX bytes:1768577 (1.6 MiB)ppp0 Link encap:Point-to-Point Protocol inet addr:121.249.203.104 P-t-P:192.168.100.1 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1 RX packets:773361 errors:0 dropped:0 overruns:0 frame:0 TX packets:693122 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:956180205 (911.8 MiB) TX bytes:74066832 (70.6 MiB)p4p1 Link encap:Ethernet HWaddr 14:FE:B5:C5:CB:0B inet6 addr: 2001:da8:7013:d129:16fe:b5ff:fec5:cb0b/64 Scope:Global inet6 addr: fe80::16fe:b5ff:fec5:cb0b/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1681710 errors:0 dropped:0 overruns:0 frame:0 TX packets:710030 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1087076647 (1.0 GiB) TX bytes:91505807 (87.2 MiB) Interrupt:39 Base address:0x4000 wlan0 Link encap:Ethernet HWaddr AC:72:89:71:B5:74 inet6 addr: fe80::ae72:89ff:fe71:b574/64 Scope:Link UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:39 errors:0 dropped:0 overruns:0 frame:0 TX packets:39 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:5265 (5.1 KiB) TX bytes:6045 (5.9 KiB)
从ppp0(point-to-point)网络可查看到IP地址为121.249.203.104。
2、利用python语言获得本机IP
Python 3.3.3 (default, Sep 6 2014, 10:53:40) [GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linuxType "help", "copyright", "credits" or "license" for more information.>>> import socket>>> print(socket.gethostbyname(socket.gethostname()))219.146.13.36
可知本机IP地址为219.146.13.36。
3、奇怪的是,利用如下代码建立与任意http主机的socket套接口连接
import socketimport sysport=80host="www.zhihu.com"]sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)sock.connect((host,port))print(sock.getsockname(),sock.getpeername())
sock.getsockname(),sock.getpeername()方法返回本次套接口连接的本地IP地址、端口;服务器的IP地址和端口。
(‘121.249.203.104‘, 44447) (‘60.28.215.71‘, 80)
121.249.203.104为本次套接口连接的本地IP。
60.28.215.71为天津市 联通IP。
本机IP到底是那个?未完待序。
Linux——获取IP及其中发现的问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。