分享

双网卡获取ip

 浮 生 2010-09-22
双网卡或多网卡情况下获得所有的IP地址 收藏

在编写基于sock的网络程序时,有时需枚举系统中绑定的所有IP地址,在一般控件无法解决些问题的情况下,可使用如下方法一试:

一、基于winsock的方法,例程如下(修改自网上一个名为“GetIP”的程序源码):

// GetIP.cpp : Defines the entry point for the console application.
// 修改:大漠 2005.12.26

#include "stdafx.h"
#include <stdio.h>
#include <winsock.h>
#include <windows.h>
#include <string.h>

void main()
{
 struct hostent *thishost;
 struct in_addr in;
 char MYName[80];
 char *Ptr;
 WORD wVersionRequested;
 WSADATA wsaData;
 int err;
    int i,n;  //循环变量

 wVersionRequested=MAKEWORD(2, 0);    //设置winsock版本
 err = WSAStartup(wVersionRequested, &wsaData);  //启用winsock支持(增加winsock引用计数)
 if(err != 0)
 {
  exit(0);
 }
 gethostname(MYName, 80);    //取得主机名
 thishost = gethostbyname(MYName);    //取得主机的信息(IP等)
 memset((void *)&in, sizeof(in), 0);
 
 //取得循环次数(IP地址数)
 n=strlen(*thishost->h_addr_list);
    n=n/2;

 for(i=0;i<n;i++)
 {
  in.s_addr = *((unsigned long *)thishost->h_addr_list[i]);
  Ptr = inet_ntoa(in);
        printf("IP地址%d:%s",i+1,Ptr);
 }

 WSACleanup();    //卸载winsock动态库(减少引用计数)
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多