vc 控制IP的有关信息

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

#include   "iostream.h "

#include   "iphlpapi.h "

 

typedef   DWORD(CALLBACK   *   PGNOINTERFACE)(PDWORD);//GetNumberOfInterfaces

typedef   DWORD(CALLBACK   *   PGAINFO)(PIP_ADAPTER_INFO,PULONG);//GetAdaptersInfo

typedef     DWORD(CALLBACK   *   PGIINFO)(PIP_INTERFACE_INFO,PULONG   );//GetInterfaceInfo

typedef     DWORD(CALLBACK   *   PGIAT)(PMIB_IPADDRTABLE,PULONG,BOOL);//GetIpAddrTable

typedef     DWORD(CALLBACK   *   PAIA)(IPAddr,IPMask,DWORD,PULONG,PULONG);//AddIPAddress

 

int   main(int   argc,   char*   argv[])

{

          DWORD   index=0;


          //函数指针

          PGAINFO   pGAInfo;

 

          //加载IP   Helper   API   所需的库文件

          HINSTANCE   hInst;//实例句柄

          hInst=LoadLibrary( "iphlpapi.dll ");

          if(!hInst)

                  cout < < "iphlpapi.dll   not   supported   in   this   platform!/n ";

 

 

          cout < < "net   adapters   information: " < <endl < <endl;  

          //------------------------------------》获得网卡数据

          pGAInfo=(PGAINFO)GetProcAddress(hInst, "GetAdaptersInfo ");

          PIP_ADAPTER_INFO   pInfo=NULL,pInfoTemp=NULL;

          ULONG   ulSize=0;

          pGAInfo(pInfo,&ulSize);//第一次调用,获取缓冲区大小

          pInfoTemp=pInfo=(PIP_ADAPTER_INFO)new(char[ulSize]);

          pGAInfo(pInfo,&ulSize);

          //遍历每一张网卡

          while(pInfo)

          {

                  //网卡名

                  cout < < "adapter   name:   " < <pInfo-> AdapterName < <endl;

 

                  //网卡描述信息

                  cout < < "description:   " < <pInfo-> Description < <endl;

                 

                  //记录下它的索引值以便后面使用。

                  index=pInfo-> Index;

 

                  //物理地址的长度

                  cout < < "hardware   address   length:   " < <pInfo-> AddressLength < <endl;

 

                  //显示物理地址

                  cout < < "hardware   address: ";

                  cout.setf(ios::hex);

                  cout.unsetf(ios::dec);

                  for(int   i=0;i <(int)pInfo-> AddressLength;i++)
                          cout < <(unsigned   int)pInfo-> Address[i];

                  cout < <endl;

                  cout.unsetf(ios::hex);

                  cout.setf(ios::dec);

 

                  //显示绑定于这张网卡之上的IP地址

                  cout < < "ip   address   bound   to   this   chapter:   " < <endl;

                  PIP_ADDR_STRING   pAddTemp=&(pInfo-> IpAddressList);              

                  while(pAddTemp)/*遍历IP列表中的每一个元素*/

                  {

                            cout < <pAddTemp-> IpAddress.String < <endl;

                            pAddTemp=pAddTemp-> Next;

                  }

 

                  //显示当前使用的IP地址

                  //因为在离线状态下pInfo-> CurrentIpAddress被置空,所以有必要做检查

                  if(pInfo-> CurrentIpAddress)

                  {

                            cout < < "current   ip   using: " < <endl;

                            pAddTemp=pInfo-> CurrentIpAddress;

                            while(pAddTemp)/*遍历IP列表中的每一个元素*/

                            {

                                      cout < <pAddTemp-> IpAddress.String < <endl;

                                      pAddTemp=pAddTemp-> Next;

                            }

                  }

                  else

                            cout < < "network   malfunctioning,no   ip   is   in   use!/n " < <endl;

                 

                  //显示DHCP   服务器数据

                  cout < < "DHCP   in   use: " < <endl;

                  pAddTemp=&(pInfo-> DhcpServer);

                  while(pAddTemp)/*遍历IP列表中的每一个元素*/

                  {

                            cout < <pAddTemp-> IpAddress.String < <endl;

                            pAddTemp=pAddTemp-> Next;

                  }

                 

                  //将当前指针移向下一个

                  pInfo=pInfo-> Next;

                 

          }

          delete   pInfoTemp;//回收无用内存

          //------------------------------------》获得网卡数据部分结束

          cout < <endl < <endl;

 

 

          //函数指针

          PGNOINTERFACE   pGNOInterface;

          PGIINFO   pGIInfo;

 

         

          cout < < "network   interfaces   information: " < <endl < <endl;

          //------------------------------------》网络接口信息部分

          //显示网络接口的个数

          DWORD   ulNumOfInterfaces=0;

          pGNOInterface=(PGNOINTERFACE)GetProcAddress(hInst, "GetNumberOfInterfaces ");

          pGNOInterface(&ulNumOfInterfaces);

          cout < < "U   have   " < <ulNumOfInterfaces < < "   network   interfaces/n ";

         

          //获取网络接口信息

          pGIInfo=(PGIINFO)GetProcAddress(hInst, "GetInterfaceInfo ");

          PIP_INTERFACE_INFO   pIInfo=NULL;

          ulSize=0;

          pGIInfo(pIInfo,&ulSize);//第一次调用,获取缓冲区大小

          pIInfo=(PIP_INTERFACE_INFO)new(char[ulSize]);

          pGIInfo(pIInfo,&ulSize);

 

          //显示网络接口信息

          for(int   i=0;i <pIInfo-> NumAdapters;i++)

          {

                  cout < < "Adapter   index: " < <pIInfo-> Adapter[i].Index < <endl;

                  cout < < "and   name: " < <pIInfo-> Adapter[i].Name < <endl;

          }

          delete   pIInfo;

          //------------------------------------》网络接口信息部分结束

          cout < <endl < <endl;

 

 

          //函数指针

          PGIAT   pGIAT;

         

          cout < < "ip   information: " < <endl < <endl;

          //------------------------------------》IP绑定信息

          pGIAT=(PGIAT)GetProcAddress(hInst, "GetIpAddrTable ");

          PMIB_IPADDRTABLE   pIPTable=NULL;

          ulSize=0;

          pGIAT(pIPTable,&ulSize,TRUE);//获得缓冲区大小

          pIPTable=(PMIB_IPADDRTABLE)new(char[ulSize]);

          pGIAT(pIPTable,&ulSize,TRUE);

          for(i=0;i <pIPTable-> dwNumEntries;i++)

          {

                  //取出每一个字段,显示IP

                  cout < < "ip   address: " < <(unsigned   int)((LOWORD(pIPTable-> table[i].dwAddr)&0x00FF)) < < ". "/

                            < <(unsigned   int)((LOWORD(pIPTable-> table[i].dwAddr)> > 8)) < < ". "/

                            < <(unsigned   int)((HIWORD(pIPTable-> table[i].dwAddr)&0x00FF)) < < ". "/

                            < <(unsigned   int)((HIWORD(pIPTable-> table[i].dwAddr))> > 8) < <endl;

                  //显示绑定网络接口的索引

                  cout < < "it   is   bound   to   interface: " < <pIPTable-> table[i].dwIndex < <endl;

 

                  //显示子网掩码

/*                   cout < < "it 's   net   mask: " < <(unsigned   int)((LOWORD(pIPTable-> table[i].dwMask)&0x00FF)) < < ". "/

                            < <(unsigned   int)((LOWORD(pIPTable-> table[i].dwMask)> > 8)) < < ". "/

                            < <(unsigned   int)((HIWORD(pIPTable-> table[i].dwMask)&0x00FF)) < < ". "/

                            < <(unsigned   int)((HIWORD(pIPTable-> table[i].dwMask))> > 16) < <endl;*/
  char   szMask[200];
  sprintf( "%s ",inet_ntoa(pIPTable-> table[0].dwMask));
  cout   < <szMask < <endl;

                  //显示广播地址

                  cout < < "and   broadcast   addres: " < <(unsigned   int)((LOWORD(pIPTable-> table[i].dwBCastAddr)&0x00FF)) < < ". "/

                            < <(unsigned   int)((LOWORD(pIPTable-> table[i].dwBCastAddr)> > 8)) < < ". "/

                            < <(unsigned   int)((HIWORD(pIPTable-> table[i].dwBCastAddr)&0x00FF)) < < ". "/

                            < <(unsigned   int)((HIWORD(pIPTable-> table[i].dwBCastAddr))> > 16) < <endl;

                  //显示最大报文大小

                  cout < < "it 's   reassembly   size: " < <pIPTable-> table[i].dwReasmSize < <endl;

                 

 

          }

          //------------------------------------》IP绑定信息结束

 

 

 

          PAIA   pAIA;

 
/*
          //------------------------------------》IP设置部分

          if(!index)

          {

                  cout < < "no   adapters   available,   cannot   set   ip   address! " < <endl;

                  return   0;//没有网络接口可以设置

          }

          pAIA=(PAIA)GetProcAddress(hInst, "AddIPAddress ");

          IPAddr   addr=0x184BC5CA;

          IPMask   mask=0x00FFFFFF;

          ULONG   context;

          ULONG   Inst;

          pAIA(addr,mask,index,&context,&Inst);

          //------------------------------------》IP设置部分结束

         

          cout < <endl < <endl;
*/
          return   0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: VC2010是一款流行的集成开发环境,用于开发Windows平台的应用程序。远控源码是指用VC2010编写的远程控制软件的源代码。 远程控制软件是一种可以从远程地访问和控制其他计算机的程序。它通常用于帮助他人进行技术支持,或者在远程地管理和操作其他计算机。远控源码可以帮助开发人员理解和定制远程控制软件的功能。 VC2010作为一种成熟的开发工具,提供了丰富的功能和强大的编程能力。开发人员可以使用VC2010的图形界面生成器和代码编辑器来创建用户界面和功能。通过使用VC2010的调试工具,开发人员可以更容易地调试和修复远控软件的错误。 远控源码通常包含了与网络通信相关的代码,用于建立和处理与被控制计算机的连接。通过VC2010的网络编程库,开发人员可以实现网络通信的功能,例如套接字建立、数据传输和命令交互等。 除了网络通信,远控源码还涉及到其他功能,如文件传输、屏幕共享、远程控制桌面等。开发人员可以使用VC2010提供的各种库和API来实现这些功能。 总而言之,VC2010远控源码是使用VC2010编写的远程控制软件的源代码。它使用VC2010的功能和库来实现网络通信、文件传输、屏幕共享等远程控制功能。开发人员可以通过修改源代码来定制远程控制软件的功能和外观,以满足自己的需要。 ### 回答2: VC2010远控源码是指使用Visual C++ 2010编写的用于远程控制的程序源代码。 远程控制是一种通过网络远程操控计算机的方式。使用VC2010编写远控源码的好处是可以充分利用VC2010的强大编程能力和丰富的库函数,编写出功能强大、稳定可靠的远控程序。 要实现远程控制功能,首先需要建立客户端与服务器之间的网络连接。在VC2010中,可以使用Winsock库函数来实现网络通信。通过建立TCP/IP连接,客户端可以与服务器进行数据通信。 在远程控制源码中,通常会包含一些基本功能,例如远程桌面共享、文件传输、远程命令执行等。这需要使用合适的库函数和算法来实现。 源码中还应该包含对安全性的考虑。远程控制涉及到隐私和安全问题,因此需要加密和认证机制来保护数据的安全性。 此外,远程控制源码还可以考虑增加一些高级功能,例如实时音视频传输、远程屏幕录制等,以提升用户体验和功能完整度。 总之,VC2010远控源码是一种使用Visual C++ 2010编写的实现远程控制功能的程序源代码。通过充分利用VC2010的编程能力和库函数,可以实现功能强大、稳定可靠的远程控制程序。此外,还需要考虑安全性和用户体验等方面的需求,以提供一个完善的远程控制解决方案。 ### 回答3: VC2010 远控源码是一种用于实现远程控制功能的源代码,可以在Visual Studio 2010开发环境下使用。 实现远程控制的源码,通常包含了客户端和服务器端两部分的代码。 在客户端源码中,主要实现了与服务器端建立连接、发送指令、接收服务器响应等功能。通过创建一个与服务器连接的套接字,并使用网络协议进行数据传输,实现了远程控制功能。 在服务器端源码中,主要实现了监听客户端连接、接收客户端指令、执行相应操作等功能。通过创建一个监听套接字,等待客户端连接请求,并接收客户端发送的指令,根据指令执行相应的操作。服务器端还负责将执行结果返回给客户端。 VC2010 远控源码还可以根据实际需求进行扩展和改进。例如,可以增加加密传输功能,提高通信的安全性;还可以增加图形界面,提供更加友好和直观的用户操作界面;还可以增加日志记录功能,方便追踪和分析远程控制过程中的问题。 综上所述,VC2010 远控源码是一种实现远程控制功能的源代码,可以在Visual Studio 2010开发环境下使用,并可以根据实际需求进行扩展和改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值