如何获取本机的IP地址(各种语言)
作者:admin 日期:2011-07-12
在很多的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();
}
}