获取计算机的IP地址



互联网协议地址(Internet Protocol Address,又译为网际协议地址),缩写为IP地址(IP Address)。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异

可以通过cmd下的IPconfig命名获取计算机中的IP地址

打开cmd

输入ipconfig命令

在编程中可以通过使用Winsock库实现获取IP地址

需要看几个函数:

WSAStartup函数

函数名:WSAStartup

函数原型::int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData);

函数功能:初始化Winsock库

参数: wVersionRequested:接收一个WORD型整数,低位表示主版本号,高位表示子版本号

lpWSAData:WSADATA结构指针,保存函数获得的Winsock信息

sockaddr_in结构体用于保存客户的地址

struct sockaddr_in

{

short sin_family //地址族,Winsock中必须是AF_INET

unsigned short sin_port    //网络字节序的端口号

struct in_addr  //网络字节序的IP地址

char sin_zero[8] //没有用,只是为了增加8个字节长度

}

使用此结构体和sockaddr结构体长度一致

scokaddr_in用来存储主机的地址信息,但是主机的IP和端口必须为网络字节序。通常人们所说的IP“192.168.0.10”,

端口80等都是主机字节序

网络字节序和主机字节序之间的转换

短整型转换notohs转换为htons

u_short notohs (    //将网络字节序u_short转换为主机字节序

u_short netshort   //要转换的u_short

);

u_short  htons (       //将主机字节序u_short转换成网络字节序

u_short   host short   //要转换的u_short

);

IP地址转换  
Inet_addr  与  inet_ntoa

unsingned  long   inet_addr(   //将字符串(例如"192.168.0.10")转换为u_long类型

const    char FAR *cp

);

char FAR * inet_ntoa (   //精sockaddr_in结构体中的sin_addr转换为字符串

struct   in_addr in

);

程序代码

#include <stdio.h>
#include <winsock2.h>

//连接Winsock库
#pragma comment(lib, "ws2_32.lib")

void main()
{
    //调用WSAtartup初始化Winsock库
    WSADATA wsaData;
    ::WSAStartup(
        MAKEWORD(2,2),//版本号为2.2
        &wsaData
        );

    char szHost[256];//存放主机名的缓冲区

    ::gethostname(szHost, 256);//取得本地主机名称

    hostent *pHost = ::gethostbyname(szHost);//通过主机名得到地址信息

    //一个主机可能有多个网卡、多个IP、下面的代码输出所有的IP地址
    in_addr addr;

    for(int i=0; ; i++)
    {
        //获得地址(网络字节)
        char *p = pHost->h_addr_list[i];

        if(NULL == p)
        {
            break;//退出循环
        }

        //将地址拷贝到in_addr结构体中
        memcpy(&addr.S_un.S_addr, p, pHost->h_length);

        //将in_addr转换为主机字节序
        char *strIP = ::inet_ntoa(addr);

        //打印IP地址
        printf("本机IP[%d]: %s\n", i+1, strIP);
    }

    //打印主机名
    printf("主机名:%s\n", szHost);

    system("pause");
}

执行结果

时间: 2024-10-07 19:58:31

获取计算机的IP地址的相关文章

小试牛刀--编程实现获取计算机的IP地址和计算机名

1.2.3  小试牛刀--编程实现获取计算机的IP地址和计算机名(1) 实例功能 获取当前计算机的IP地址和计算机名 源码路径 光盘\yuanma\1\IP 本实例的目的是,使用Visual C++ 6.0开发一个获取当前机器的IP地址和计算机名的应用程序. 1. 设计MFC窗体 使用Visual C++ 6.0创建一个MFC项目后,根据本实例的需要设计两个窗体,分别是IDD_ABOUTBOX窗体(见图1-12)和IDD_IPADDRESS_DIALOG窗体(见图1-13).   图1-12 

关于是用dotnet获取本机IP地址+计算机名的方法

印象中在maxscript帮助文档里找到过方法,但是当时没记下来.只能通过dotnet实现了. 如果电脑有无线网卡和本地连接,可能会出现乱码,也问了写dotnet的朋友,提供了一些思路,不过最终还是使用了这个笨办法. fn getIP_PCname = ( cc = (dotnetclass "System.Net.Dns") oo = cc.GetHostAddresses(cc.GetHostName()) for ip = 1 to oo.count do ( getip = f

Java如何获取本地计算机的IP地址和主机名?

在Java编程中,如何获取本地计算机的IP地址和主机名? 以下示例显示如何使用InetAddress类的getLocalAddress()方法获取系统的本地IP地址和主机名. package com.yiibai; import java.net.InetAddress; public class GetLocalIPAddress { public static void main(String[] args) throws Exception { InetAddress addr = Ine

获取访问者的IP地址

function getIp() { $realip = NULL; if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ipArray = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); foreach($ipArray as $rs) { $rs = trim($rs); if($rs != 'unknown') { $realip = $rs; break; } } } else if(isset($

用java获取本机IP地址

在网上找了几个用java获取本机IP地址的代码,发现都少都有些不完美,自己整理了一下.突然之间很想把自己的IP地址给获取了,虽然用系统自带命令可 以得到,但自己想写一个程序获取一下,到网上搜索了一下java获取本机IP地址的方法,结果居然发现没有一个是可以用的,气的我老人家吐血, 这些人闭着眼睛写程序,写完了就往网上发,也不测试一下,害的我以为自己RP问题,老是获取不到正确的IP地址,强烈谴责!!!为了表示鄙视,现把网上找到的主要的两种方法的不足给指出一下方法一(只能在Windows上使用,Li

解决vmbox中ubuntu获取到了ip地址无法上网的问题

在vmbox配置网络的过程中,不知道什么原因ubuntu获取到了ip地址但是确无法上网 重启ubuntu后任然无法上网 解决方法: 关掉vmbox中的ubuntu,设置网络连接模式为“网络地址转换NAT” 启动ubuntu,此时已经可以上网了 再设置网络模式为桥接模式,即可以上网了

获取客户端的IP地址

/// <summary> /// 获取客户端的IP地址 /// </summary> /// <returns></returns> public static string ClientIP() { string result = String.Empty; result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; if (result

获取本机IP地址

这里有两种方法: 1 //获取本机IP 2 - (NSString *)localIPAddress 3 { 4 NSString *localIP = nil; 5 struct ifaddrs *addrs; 6 if (getifaddrs(&addrs)==0) { 7 const struct ifaddrs *cursor = addrs; 8 while (cursor != NULL) { 9 if (cursor->ifa_addr->sa_family == AF_

服务器端获取客户端的IP地址(当客户端调用由Axis开发的WebService)

一.前言 由于项目中一个小的模块需要获取客户端的IP地址以保证安全调用webservice接口,项目中客户端使用C#编写,服务器端使用Java编写,服务器端与客户端采用Axis开发的WebService进行通信.服务器端维护IP白名单列表,只有IP地址在白名单中的客户端才可以成功调用到接口,获得服务. 二.代码清单 若要成功获取客户端IP地址,需要如下Jar包的支持. servlet-api.jar axis.jar axis2-kernel-1.6.2.jar 获取IP地址的具体代码如下: i