Linux——获取IP及其中发现的问题
由于最近在学习网络编程,喜欢玩弄IP地址。
首先,我需要搞清楚如何获得本机IP。
1、利用Linux系统
在bash中输入ifconfig可获得以下代码:
(ev1)[root@Simonxu bin]# ifconfig lo 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 linux Type "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 socket import sys port=80 host="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到底是那个?未完待序。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。