一、gethostname,gethostbyname的用法 这两个函数可以用来获取主机的信息。 gethostname:获取主机的名字 gethostbyname:通过名字获取其他的信息(比如ip) 1.gethostname: man手册里面的解释(部分): #include <unistd.h> int gethostname(char *name, size_t len); int sethostname(const char *name, size_t inet.h> int main() { printf("%s() +++ hello\n", __func__); char host[256] = {0}; if(gethostname (host, sizeof(host)) < 0) { perror("gethostname"); return -1; }
In case no FQDN is available, hostname from gethostname() is returned. 译文: 从名称中获得完全合格的域名。 如果没有可用的FQDN,请输入主机名 从gethostname()返回。 () 'lanzao' 中文情况下 gethostbyaddr() 报错,gethostname() 不会。 In case no FQDN is available, hostname from gethostname() is returned. """ try: name = name.strip() if not name or name == '0.0.0.0': name = gethostname() try
领8888元新春采购礼包,抢爆款2核2G云服务器95元/年起,个人开发者加享折上折
gethostbyname函数获取本地ip地址 >>>impoert socket >>> socket.gethostbyname(socket.gethostname()) '116.196.107.126 ' >>> hostname = socket.gethostname() >>> print hostname jd.svr.lianst.com >>> socket.gethostbyname( hostname) '116.196.107.126' gethostbyname_ex函数获取本地ip地址 >>> socket.gethostbyname_ex(socket.gethostname ()) ('jd.svr.lianst.com', [], ['116.196.107.126']) >>> socket.gethostbyname_ex(socket.gethostname())[ 2] ['116.196.107.126'] 从上面两个例子里面可以看出来,gethostbyname仅仅获取到ip地址,并以字符串的形式返回;而gethostname_ex则可以获取到更多的信息,包括
因此,通过DNS服务器查找域名的工作就由getHostName方法来完成。 如果IP地址不存在或DNS服务器不允许进行IP地址和域名映射,就返回这个IP地址。 InetAddress address=InetAddress.getByName(“141.146.8.66”); System.out.println(address.getHostName()) 区别是,该方法得到的是主机名,getHostName得到的是主机别名。 1. 使用 getLocalHost() 创建InetAddress对象 此时getCanonicalHostName方法和getHostName方法得到的都是本机名 2. 使用IP地址 创建InetAddress对象 此时getCanonicalHostName方法和getHostName方法完全相同,返回的都是主机名,而不是主机别名。
import socket # 查看当前主机名 print('当前主机名称为 : ' + socket.gethostname()) # 根据主机名称获取当前IP print('当前主机的IP为: ' + socket.gethostbyname(socket.gethostname())) # 下方代码为获取当前主机IPV4 和IPV6的所有IP地址(所有系统均通用) addrs = socket.getaddrinfo (socket.gethostname(),None) for item in addrs: print(item) # 仅获取当前IPV4地址 print('当前主机IPV4地址为:' +
from socket import gethostname # 将gethostname放如当前名字空间 print gethostname () # 直接调用 socket.gethostname() # 引发异常NameError: socket 3.3 用逗号分割模块名称就可以同时导入多个模块: 关键字来改变模块的引用对象名字: import os as system import socket as net, thread as threads system.chdir("..") net.gethostname all__,使用from module import * 语句导入__all__列表中存在的对象 from语句支持使用星号(*)代表模块中除下划线开头的所有对象: from socket import gethostname
Python获取本机IP地址的一般方法为 import socket IP = socket.gethostbyname(socket.gethostname()) 通过gethostname Windows 下适用) def GetLocalIPByPrefix(prefix): localIP = '' for ip in socket.gethostbyname_ex(socket.gethostname localIP = ip return localIP print(GetLocalIPByPrefix('192.168')) 更简单的方法(不用修改代码,还是用socket.gethostname
import socket # 查看当前主机名 print('当前主机名称为 : ' + socket.gethostname()) # 根据主机名称获取当前IP print('当前主机的IP为: ' + socket.gethostbyname(socket.gethostname())) # Mac下上述方法均返回127.0.0.1 # 通过使用socket中的getaddrinfo中的函数获取真真的 IP # 下方代码为获取当前主机IPV4 和IPV6的所有IP地址(所有系统均通用) addrs = socket.getaddrinfo(socket.gethostname(),None) for
InetAddress.getLocalHost()方法,获取到InetAddress对象 调用InetAddress对象的getHostAddress(),得到IP地址 调用InetAddress对象的getHostName InetAddress.getLocalHost(); System.out.println(i.getHostAddress()); System.out.println(i.getHostName InetAddress.getByName("www.baidu.com"); System.out.println(ia.getHostAddress()); System.out.println(ia.getHostName
三 Socket接口的检索有关域名、通信服务和协议等Internet信息的数据库函数,如 gethostbyaddr、gethostbyname、gethostname、getprotolbyname 1.gethostname() 【函数原型】 int PASCAL FAR gethostname (char FAR * name, int namelen); 【使用说明】 该函数可以获取本地主机的主机名 该函数唯一的参数name就是前面调用函数gethostname()得到的主机名。若无错误,刚返回一个指向hostent结构的批针,它可以标识一个“主机”列表。
of errors. */ private String defaultIpAddress = "127.0.0.1"; } 第三步:EurekaInstanceConfigBean#getHostName 方法实现 getHostName是一个Override的方法,继承于com.netflix.appinfo.EurekaInstanceConfig接口,该方法有个boolean类型的参数refresh eureka.instance.ip-address参数则会根据eureka.instance.prefer-ip-address设置的值进行返回信息,源码如下所示: @Override public String getHostName IP优先注册方式源码分析 EurekaInstanceConfigBean#getHostName方法直接调用本类重载方法getHostName(boolean refresh)并且传递参数为false application.yml配置文件进行设置eureka.instance.hostname以及eureka.instance.ip-address后会直接替换原默认值,在EurekaInstanceConfigBean#getHostName
服务端: import socket s = socket.socket(); host = socket.gethostname(); port = 10086; s.bind((host,port) c.sendall(strMsg.encode()) c.close() pass 客户端: import socket s = socket.socket() host = socket.gethostname
socket.gethostname() 获取本机的名字。 # 发送数据 ip = input("输入对方的ip:") port = int(input("输入对方的端口:")) # ip_port = (socket.gethostname( socket.SOCK_DGRAM) # 发送数据 ip = input("输入对方的ip:") port = int(input("输入对方的端口:")) # ip_port = (socket.gethostname
InetAddress.getByName("www.baidu.com");//封装域名 System.out.println(ia5); System.out.println(ia5.getHostName InetSocketAddress("192.168.199.217",8080); System.out.println(isa); System.out.println(isa.getHostName System.out.println(isa.getPort()); InetAddress ia = isa.getAddress(); System.out.println(ia.getHostName
import os from socket import gethostbyname, gethostname # 获取本机IP地址 host = gethostbyname(gethostname()
利用socket包中的gethostname函数获取机器名之后,再调用gethostbyname函数获取机器的IP地址。 import socket def print_machine_info(): host_name = socket.gethostname() ip_address = socket.gethostbyname
/ while (waitpid(-1, NULL, WNOHANG) > 0) ; } 二、与前面说的getsockname 类似的函数还有getpeername、gethostname 、gethostbyname、gethostbyaddr 、getaddrinfo、 getifaddrs, freeifaddrs、getnameinfo 等,现在着重来看一下gethostname #include <unistd.h> int gethostname(char *name, size_t len); #include <netdb.h> struct hostent *gethostbyname(const char *name); gethostname 可以得到主机名,而gethostbyname 可以通过主机名得到一个结构体指针,可以通过此结构体得到与主机相关的 (host, sizeof(host)) < 0) ERR_EXIT("gethostname error"); struct hostent *hp; if ((hp
5 String getHostName() 获取此 IP 地址的主机名。 6 static InetAddress getLocalHost() 返回本地主机。 "www.baidu.com"); System.out.println(address1); System.out.println(address1.getHostName "103.235.46.39"); System.out.println(address2); System.out.println(address2.getHostName
注:当客户端和服务器位于同一电脑上时,gethostname将被使用。(LAN-本地IP/WAN-公共IP) 2、客户端想从服务器接收一些信息。 实例 import socket s=socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((socket.gethostname(),
InetAddress.getByName("localhost"); System.out.println(a.getHostAddress()); System.out.println(a.getHostName InetAddress.getByName("www.baidu.com"); System.out.println(b.getHostAddress()); System.out.println(b.getHostName
扫码关注腾讯云开发者
领取腾讯云代金券