找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 4382|回复: 0

[开源] Get Public IP

[复制链接]

96

主题

158

回帖

4

精华

核心会员

积分
6513
发表于 2012-5-13 16:20:31 | 显示全部楼层 |阅读模式
本帖最后由 diddom 于 2012-5-14 00:26 编辑
  1. // GetPublicIP.cpp : Defines the entry point for the console application.
  2. //

  3. #include "stdafx.h"
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <winsock2.h>  //這個必須在<windows.h>前面
  7. #include <windows.h>
  8. //#include <winsock2.h>
  9. #include <ws2tcpip.h>


  10. #pragma comment(lib,"ws2_32.lib")

  11. unsigned long dwProtocol=IPPROTO_IP;
  12. unsigned long dwInterface=0;
  13. //unsigned long dwIoControlCode=SIO_RCVALL;

  14. #define HI_WORD(byte)    (((byte) >> 4) & 0x0F)
  15. #define LO_WORD(byte)    ((byte) & 0x0F)


  16. int EnumNetworkInterfaces()
  17. {

  18.         SOCKET hSocket;
  19.         SOCKET_ADDRESS_LIST *pstlist=NULL;

  20.         int i;
  21.         char szBuf[4096];
  22.         unsigned long dwBytesRet;
  23.        

  24.         hSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_IP);

  25.         if(hSocket==SOCKET_ERROR)
  26.         {
  27.                 printf("socket() failed!error code:%d\n",WSAGetLastError());
  28.                 return 0;
  29.         }

  30.         if(WSAIoctl(hSocket,SIO_ADDRESS_LIST_QUERY,NULL,0,szBuf,4096,&dwBytesRet,NULL,NULL)==SOCKET_ERROR)
  31.         {
  32.                 printf("WSAIoctl(SIO_ADDRESS_LIST_QUERY) failed!Error code:%d\n",WSAGetLastError());
  33.                 return 0;
  34.         }

  35.         pstlist=(SOCKET_ADDRESS_LIST *)szBuf;
  36.        
  37.         for(i=0; i<pstlist->iAddressCount; i++)
  38.         {
  39.                 printf(" %d  %s\n",i,inet_ntoa(((SOCKADDR_IN *)pstlist->Address[i].lpSockaddr)->sin_addr));;
  40.         }

  41.         printf("%d\n",hSocket);
  42.         system("pause");
  43.         closesocket(hSocket);
  44.         return 0;

  45. }



  46. int main(int argc, char* argv[])
  47. {

  48.         WSADATA wsaData;
  49.         WSAStartup(0x0202, &wsaData);
  50.         EnumNetworkInterfaces();
  51.         WSACleanup();

  52.         return 0;
  53. }
复制代码
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表