如何用C++编程获得某台机器的IP地址

如何用C++编程获得某台机器的IP地址,第1张

要获取IP地址,首先必须得到机器的主机名(host

name),调用gethostname就可以实现,有了主机名,接下来调用gethostbyname来获取包括IP地址在内的更多的主机信息。gethostbyname返回一个指向hostent数据结构的指针,这个结构在<winsockh>文件中是这样定义的:

//

来自winsockh

struct

hostent

{

char

FAR

h_name;

/

正式的主机名/

char

FAR

FAR

h_aliases;

/

别名列表/

short

h_addrtype;

/

主机地址类型/

short

h_length;

/

地址长度/

};

这是个典型的底层APIs使用的数据结构,很多人都不是很熟悉它。实际上,hostent是一个变长的数据结构,h_name是主机名,在例子程序中的值为

"zxnhangwiresdb"。没有别名(h_aliases)。h_addrtype是地址类型(或者也叫地址家族),在例子程序中的值为2(AF_INET

=

internet,其它内容参见winsockh)。h_length是每一个地址的长度,以字节为单位。因为IP地址的长度是4个字节,所以在例子程序中的值为4,h_addr_list是地址数组的开始点,它们一个接着一个存放,结尾是一个null。每一个xyzw数字占一个字节。为了将IP地址格式化为xyzw的形式,必须将地址数组先拷贝到一个叫sockaddr的数据结构中,然后调用一个特殊的函数inet_ntoa。

图二是hostent

结构在内存中存放示意图:

图二hostent

结构在内存中的存放示意图

相信以上的解释再辅以阅读代码,你以后不再会对hostent结构感到陌生。

最后,顺祝编程愉快!

'winsock调用

'电脑A:

Private Sub Command1_Click()

udpPeerASendData Text1Text & "说: " & txtSendText '发送文本

txtOutputText = Text1Text & "说: " & txtSendText & vbCrLf & txtOutputText

txtSendText = ""

End Sub

Private Sub Command2_Click()

FloginVisible = False

FshowVisible = True

With udpPeerA

RemoteHost = Text2Text '要连接到的电脑名

RemotePort = 1011 '要连接到的端口号

LocalPort = 1010 '该Winsock控制将要使用的本地端口号,便于其他端和该Winsock通讯

Bind 1010 '将该Winsock控制绑定到该本地端口

End With

End Sub

Private Sub udpPeerA_DataArrival(ByVal bytesTotal As Long)

Dim strData As String

Text2Text = udpPeerARemoteHostIP '获取对方IP

udpPeerAGetData strData, vbString

txtOutputText = strData & vbCrLf & txtOutputText

If strData = "end" Then End

End Sub

'电脑B

Private Sub Command1_Click()

udpPeerASendData Text1Text & "说: " & txtSendText '发送文本

txtOutputText = Text1Text & "说: " & txtSendText & vbCrLf & txtOutputText

txtSendText = ""

End Sub

Private Sub Command2_Click()

FloginVisible = False

FshowVisible = True

With udpPeerA

RemoteHost = Text2Text '要连接到的电脑名

RemotePort = 1010 '要连接到的端口号

LocalPort = 1011 '该Winsock控制将要使用的本地端口号,便于其他端和该Winsock通讯

Bind 1011 '将该Winsock控制绑定到该本地端口

End With

End Sub

Private Sub udpPeerA_DataArrival(ByVal bytesTotal As Long)

Dim strData As String

Text2Text = udpPeerARemoteHostIP '获取对方IP

udpPeerAGetData strData, vbString

txtOutputText = strData & vbCrLf & txtOutputText

If strData = "end" Then End

End Sub

这段代码模拟浏览器打开ip138网页,并把显示结果的一部分显示出来,粗略注释如下:

Dim h As Object, s As String'定义变量

Set h = CreateObject("MicrosoftXML>

1 ipconfig(ip配置)可查看ip,子网掩码,网关。2 ipconfig/all(全部ip配置) 则可以看到主机名,节点类型,dhcp和自动配置是否启用,网卡mac地址,dns服务器等更多

在开始里面点击运行,然后输入CMD,点击确认后在跳出的窗口输入nslookup即可现在试一试,还可以查别人的控制面板--网络连接--本地连接(右键属性)--常规(

在和别人用QQ聊天时,用cmd查询别人的IP 地址怎么样从众多地址中获取真。

首先锁定你要查询的目标,我们就以朋友A来说吧,第一步打开cmd输入netstat -a,记住这些IP地址,如果你想知道他的IP地址,你和他对话。然后打开cmd 再次输入

输入ipconfig /all就可以显示本机IP地址。使用组合键Win+R调出运行,输入CMD回车,打开命令提示符,输入上面的命令就可以查看本机的IP地址。

上次查到可以从DOS窗口里看IP地址,可是里面有3行,不知道哪个是啊!

你可以在运行里面输入CMD然后输入IPCONFIG就可以看到的

请问用cmd怎样查网站ip 我知道是在网站运行的时候在开始键运行里用cmd查。

ipconfig或ipconfig/all

在CMD命令中查看IP网卡IP地址的命令是?? 测试网络是否连通命令是??

ping 19216808-t

在和别人用QQ聊天时,用cmd查询别人的IP 地址怎么样从众多地址中获取真。

你好, 你是针对QQ 聊天然后用命令查询别人 IP 地址 是吧?下面我教你一个方法:这种方法是通过Windows系统内置的网络命令“netstat”,来查出对方好友的IP地址,

们刚买的电脑是如许设置的运行→cmd→然后输入几串代码就出现了IP地址进。

你是想查看本身电脑的IP地址吗吗点击开端 ->运行 输入:cmd 在打开的法度榜样里输入ipconfig 就可以查看本机的IP地址了。

就出现了IP地址,进入本地连接把那IP地址输入就行了!

如何进入dos命令行窗口:点击系统中开始里的运行(图1所示),在运行栏中输入cmd命令(图2所示), *** 作系统中的DOS窗口就会d出(图3所示),在这里我们可以

1 使用组合键win+r调出运行,输入CMD回车,进入命令提示符。2 在命令提示符下输入 ipconfig /all3 IPV4地址就是本机的IP地址,当然这个是使用路由器获得的路由器IP

输入ipconfig或者config/all都提示不是内部命令什么的。。

1,应该是 ipconfig 或者 ipconfig /all2,其实你打开 有问题,来查下>

RequestServerVariables("REMOTE_HOST")这段代码可以获取当前用户的IP地址~

如果你的网页是ASP的~

在注册页里添加rs("userip")=RequestServerVariables("REMOTE_HOST")这样就可以了~在后台里在吧读取代码写好就可以再后台查看了!

希望对你有帮助!

1得到局域网网段,可由自己机器的IP来确定 (也可以手动获取主机IP-CMD-ipconfig /all)

2根据IP类型,一次遍历局域网内IP地址

JAVA类,编译之后直接运行便可以得到局域网内所有IP,具体怎样使用你自己编写相应代码调用便可

代码如下::

package bean;

import javaio;

import javautil;

public class Ip{

static public HashMap ping; //ping 后的结果集

public HashMap getPing(){ //用来得到ping后的结果集

return ping;

}

//当前线程的数量, 防止过多线程摧毁电脑

static int threadCount = 0;

public Ip() {

ping = new HashMap();

}

public void Ping(String ip) throws Exception{

//最多30个线程

while(threadCount>30)

Threadsleep(50);

threadCount +=1;

PingIp p = new PingIp(ip);

pstart();

}

public void PingAll() throws Exception{

//首先得到本机的IP,得到网段

InetAddress host = InetAddressgetLocalHost();

String hostAddress = hostgetHostAddress();

int k=0;

k=hostAddresslastIndexOf("");

String ss = hostAddresssubstring(0,k+1);

for(int i=1;i <=255;i++){ //对所有局域网Ip

String iip=ss+i;

Ping(iip);

}

//等着所有Ping结束

while(threadCount>0)

Threadsleep(50);

}

public static void main(String[] args) throws Exception{

Ip ip= new Ip();

ipPingAll();

javautilSet entries = pingentrySet();

Iterator iter=entriesiterator();

String k;

while(iterhasNext()){

MapEntry entry=(MapEntry)iternext();

String key=(String)entrygetKey();

String value=(String)entrygetValue();

if(valueequals("true"))

Systemoutprintln(key+"-->"+value);

}

}

class PingIp extends Thread{

public String ip; // IP

public PingIp(String ip){

thisip=ip;

}

public void run(){

try{

Process p= RuntimegetRuntime()exec ("ping "+ip+ " -w 300 -n 1");

InputStreamReader ir = new InputStreamReader(pgetInputStream());

LineNumberReader input = new LineNumberReader (ir);

//读取结果行

for (int i=1 ; i <7; i++)

inputreadLine();

String line= inputreadLine();

if (linelength() <17 || linesubstring(8,17)equals("timed out"))

pingput(ip,"false");

else

pingput(ip,"true");

//线程结束

threadCount -= 1;

}catch (IOException e){}

}

}

}

1得到局域网网段,可由自己机器的IP来确定 (也可以手动获取主机IP-CMD-ipconfig /all)

2根据IP类型,一次遍历局域网内IP地址

JAVA类,编译之后直接运行便可以得到局域网内所有IP,具体怎样使用你自己编写相应代码调用便可

代码如下::

package bean;

import javaio;

import javautil;

public class Ip{

static public HashMap ping; //ping 后的结果集

public HashMap getPing(){ //用来得到ping后的结果集

return ping;

}

//当前线程的数量, 防止过多线程摧毁电脑

static int threadCount = 0;

public Ip() {

ping = new HashMap();

}

public void Ping(String ip) throws Exception{

//最多30个线程

while(threadCount>30)

Threadsleep(50);

threadCount +=1;

PingIp p = new PingIp(ip);

pstart();

}

public void PingAll() throws Exception{

//首先得到本机的IP,得到网段

InetAddress host = InetAddressgetLocalHost();

String hostAddress = hostgetHostAddress();

int k=0;

k=hostAddresslastIndexOf("");

String ss = hostAddresssubstring(0,k+1);

for(int i=1;i <=255;i++){ //对所有局域网Ip

String iip=ss+i;

Ping(iip);

}

//等着所有Ping结束

while(threadCount>0)

Threadsleep(50);

}

public static void main(String[] args) throws Exception{

Ip ip= new Ip();

ipPingAll();

javautilSet entries = pingentrySet();

Iterator iter=entriesiterator();

String k;

while(iterhasNext()){

MapEntry entry=(MapEntry)iternext();

String key=(String)entrygetKey();

String value=(String)entrygetValue();

if(valueequals("true"))

Systemoutprintln(key+"-->"+value);

}

}

class PingIp extends Thread{

public String ip; // IP

public PingIp(String ip){

thisip=ip;

}

public void run(){

try{

Process p= RuntimegetRuntime()exec ("ping "+ip+ " -w 300 -n 1");

InputStreamReader ir = new InputStreamReader(pgetInputStream());

LineNumberReader input = new LineNumberReader (ir);

//读取结果行

for (int i=1 ; i <7; i++)

inputreadLine();

String line= inputreadLine();

if (linelength() <17 || linesubstring(8,17)equals("timed out"))

pingput(ip,"false");

else

pingput(ip,"true");

//线程结束

threadCount -= 1;

}catch (IOException e){}

}

}

}

以上就是关于如何用C++编程获得某台机器的IP地址全部的内容,包括:如何用C++编程获得某台机器的IP地址、想找个vb程序聊天室代码!!!、VB获取外网ip这串代码注释一下!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10157401.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存