如何获取本机的IP地址(各种语言)

在很多的socket编程中,经常会有需要获取本机ip的地方。所以下面罗列一下几种常用编程语言的获取本机ip的方法。

首先要列出的是C/C++的方法。在这里顺便说一点,C语言和C++的思想是有很大的区别,但是基本语法类似。所以如果我给出一个函数,里面用了cin,cout之类的C++里面的东西,你不要以为这不是C语言。你如果需要在纯c语言下编译,自己改掉这条语句就是了。这是题外话了  。

void   CTransFile::GetIpAddress() 

int   Num   =   0,   i   =   0; 
char   HostName[100]; 
hostent   *pHostent   =   NULL; 
if(gethostname(HostName,100)   ==   0) 

pHostent   =   gethostbyname(HostName); 
for(i   =   0;   ((pHostent   !=   NULL)   &&   (pHostent-> h_addr_list[i]!=   NULL));   i++) 

cout < < "输入 " < <i+1 < < "绑定此网卡: " < <inet_ntoa(*(in_addr*)pHostent-> h_addr_list[i]) < <endl; 

if(i   ==   1) //   只有一块网卡的时候 

Num   =   1; 

else 

cin> > Num; 

m_LocalIp   =   (*(in_addr*)pHostent-> h_addr_list[Num-1]).S_un.S_addr; 
cout < < "你选择绑定的IP为 " < <inet_ntoa(*(in_addr*)pHostent-> h_addr_list[Num-1]) < <endl; 

}

 

下面是一个java的简单获取本机ip的实例

 

  //iplabel.java
import java.net.*;
import java.awt.*;
import javax.swing.*;
public class iplabel
{
JFrame frame;
JLabel label1,label2;
JPanel panel;
String ip,address;

  public void getip()
{
try
{
InetAddress addr = InetAddress.getLocalHost();
ip=addr.getHostAddress().toString;//获得本机IP
address=addr.getHostName()toString;//获得本机名称


//System.out.println("addr=:"+String.valueOf(addr));
}
catch(Exception e)
{
System.out.println("Bad IP Address!"+e);
}
}

  public void showframe()
{
frame=new JFrame("my ip");
label1=new JLabel("this my ip");
label1.setText(ip);
label2=new JLabel("this my address");
label2.setText(address);
panel=new JPanel();
panel.add(label1);
panel.add(label2);
frame.getContentPane().add(panel);

  frame.setSize(400,300);
frame.setVisible(true);
}

  public static void main(String agrs[])
{
iplabel myip=new iplabel();
myip.getip();
myip.showframe();

  }
}




[本日志由 admin 于 2011-07-12 06:35 PM 编辑]

有什么问题可以加群,100852896
点击这里加入此群 在线提问
文章来自: 本站原创
Tags: ip地址 本机ip socket
评论: 1 | 查看次数: 6842
博主QQ: 友情链接请找我
QQ群: 灰色档案
返回顶部 关闭