
要获取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这串代码注释一下!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)