Linux——获取IP及其中发现的问题
由于最近在学习网络编程,喜欢玩IP地址。
首先,我需要搞清楚如何获得本机IP。
===========================================11.04=================================================
我去,更奇怪的事情出现了。
1、
我用http://test-ipv6.com/做IPv6测试,测试结果为0/10.
但这不重要,重要的是今天(11.04)它告诉我本机IP是:111.17.191.79
2、
当我百度关键字“公网IP”时,百度告诉为我的IP地址为:219.146.245.35
3、
当我使用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
4、当我调用bash命令:ifconfig时:
ppp0 Link encap:Point-to-Point Protocol
inet addr:180.201.198.204 P-t-P:192.168.100.1 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (9.8 MiB) TX bytes: (1.4 MiB)
IP地址:180.120.198.204
四种方法得到四个IP地址。很有意思啊。
=================================================尝试分析==========================================================
1、第一种方法和第二种方法得到的IP地址来源原理未知,暂不做讨论。
2、利用python获得IP地址,用到了两个函数socket.gethostname()、socket.gethostbyname()
python文档的解释:
socket.gethostname()
Return a string containing the hostname of the machine where the Python interpreter is currently executing.
If you want to know the current machine’s IP address, you may want to use gethostbyname(gethostname()).
This operation assumes that there is a valid address-to-host mapping for the host, and the assumption does not always hold. Note: gethostname() doesn’t always return the fully qualified domain name; use getfqdn() (see above).
socket.gethostbyname()
Translate a host name to IPv4 address format. The IPv4 address is returned as a string, such as '100.50.200.5'. If the host name is
an IPv4 address itself it is returned unchanged. See gethostbyname_ex() for a more complete interface. gethostbyname() does not
support IPv6 name resolution, and getaddrinfo() should be used instead for IPv4/v6 dual stack support.
Linux——获取IP及其中发现的问题的更多相关文章
- [Linux] 获取出日志中的邮箱shell
需求是把所有的日志中邮箱获取出来,根据指定关键字过滤,邮箱的格式是\txxx@xxx\t的格式,日志的存放是按照日期作为目录 #!/bin/bash logBasePath="/data1/ ...
- win10连接无线网,开启移动热点,手机连接它手机一直显示获取ip地址中。
*必须要有无线网卡才能设置WIFI首先打开电脑,选中“计算机”或者“我的电脑”,右击进入“管理”选项“.打开“计算机管理”窗口之后,在左栏菜单选项中找到“服务和应用程序”下的“服务”选项,如图点击进入 ...
- VMware虚拟机在仅主机模式下的网卡无法动态获取IP
自己在VMware虚拟机中开启一台主机的时候,发现比以往的开机速度慢了好多,起初不以为然,直到用Xshell通过ssh远程连接eth1的ip地址才发现连接失败(这个ip是之前eth1正常的时候获取的i ...
- 通过awk获取netstat命令中的进程号
需要如下: 获取进程号
- get_linux_ip_info.sh 获取ip地址
linux 获取ip地址 get_linux_ip_info.sh #!/bin/bash #/告诉使用者,这程序的用户是从ipconfig 命令中获取IP地址 echo "该程序是从命令中 ...
- Linux 获取本机IP、MAC地址用法大全
getifaddrs()和struct ifaddrs的使用,获取本机IP ifaddrs结构体定义如下: struct ifaddrs { struct ifaddrs *ifa_next; /* ...
- Linux准确获取IP
有时搞一些跨网段的工程和应用,需要尽量准确的知道电信.网通.铁通等电信运营商的IP地址段分配情况,可网上的资料不但很少,而且经常都是N个月前的过期资料…… APNIC是管理亚太地区IP地址分配的机构, ...
- 嵌入式 hi3518平台获取网络环境中的ip、netmask、broadcast等信息
<span style="font-family:Courier New;"> /********************************** (C) COPY ...
- Java 获取Linux 的IP地址
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...
随机推荐
- ubuntu下使用mysql的一点笔记
因为使用的是apt-get安装的.所以,mysql的安装路径在/var/lib/mysql下面 在普通用户下,cd /var/lib/mysql,居然提示: bash:cd:mysql Permiss ...
- 关于因各种原因,造成LINUX主机不能通过域名访问自己的解决办法
因路由黑洞或其它原因造成自己域名或外网IP的解决办法: vi /etc/hosts 添加一行: 10.28.86.250 www.edusoa.com 保存退出.
- 解决使用base64解码太慢的问题,原因是根本就不应该使用此方法解决。
/* 功能:将中文内容的斜杠和双引号转了,方便保存到lua+ssdb中,从SSDB提取出来组装JSON时就不会出错. 作者:黄海 时间:2015-01-31 */ function jsonencod ...
- Laravel 中的 Many-To-Many
在实际的开发中,我们经常会接触到几种常见的对应关系模式: One-To-One //一对一 One-To-Many //一对多 Many-To-Many //多对多 在刚刚开始接触到这些概念的时候,其 ...
- 好的web前端是如何拿到30万年薪的?
2018年前端开发不再像过去几年里新技术框架层出不穷,而是各种组件,模块,很多东西都有痕迹可寻,技术都在原来的基础上有了革新和沉淀. 前端招聘方面也在紧跟技术发展,大量“滥竽充数”的速成开发者开始失去 ...
- Node-sqlite3多字段插入数据问题
Node-sqlite3多字段插入数据问题 在npm官网上看到sqlite3的使用方法,就去尝试了一下,奈何关于多字段插入的API简介很少,直接上代码: 官网的示例如下: var sqlite3 = ...
- 纤程与Quasar
Java使用的是系统级线程,也就是说,每次调用new Thread(....).run(),都会在系统层面建立一个新的线程,然鹅新建线程的开销是很大的(每个线程默认情况下会占用1MB的内存空间,当然你 ...
- 2017 ACM-ICPC 亚洲区(青岛赛区)网络赛 1009
#include<cmath> #include<set> #include<list> #include<deque> #include<map ...
- Java中byte与(16进制)字符串的互相转换
java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示,所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16 ...
- Codeforces #480 Tutorial
Problem A,B,C: 简单的模拟,注意A中p mod q时对q=0特殊处理(注意范围) Problem D: Brief Intro: 给定长度为N的数组A,将A中所有连续子序列分成最少的组, ...