获取本机外网IP 更新到D盘的文件 追500高分

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取本机外网IP 更新到D盘的文件 追500高分相关的知识,希望对你有一定的参考价值。

我要把家里的机器做成CS 服务器 人在学校 由于家里是ADSL 所以IP会改变 现在我想写个 获取本机外网IP 更新到D盘cs.txt 里
注意:cs.txt里面的 文件格式 127.0.0.1 202.202.202.202 27015
前面的127.0.0.1 和后面的27015 端口不用更新
只需要 每分钟检测一次外面IP 如果不是 202.202.202.202 更新他
说的很明白了吧 请高手 写好代码 自己编译一下 如果成功 我追加 300分

注意CS.TXT里面的 文本格式:IP空格IP空格端口(IP IP 27015) 每分钟检测一下中间的IP 如果变了 就更新CS.TXT
请高手 写好代码 自己编译一下 如果成功 我追加 300分 绝不食言 不要有BUG啦 你自己先试试 不要吃内存哦 语言用 VB DELPHI VC 都可以 只要给我源码 我机器上有这三个编程软件

/********************************************/
// 控制台程序获取本机外网IP 并更新文件
// Code By PE_luck
// 百度:http://zhidao.baidu.com/question/74236874.html
/*********************************************/

#include <windows.h>
#include <Wininet.h>
#include <stdio.h>

#pragma comment(lib,"Wininet.lib")

void update()

printf("读取IP数据...\n");
HINTERNET hnet= InternetOpen("PE_luck",PRE_CONFIG_INTERNET_ACCESS,NULL,INTERNET_INVALID_PORT_NUMBER,0);
HINTERNET hopen= InternetOpenUrl(hnet,"http://www.ip138.com/ip2city.asp",NULL,0,INTERNET_FLAG_RELOAD,0);
CHAR buff[1024*100]=0;
DWORD dwRead=0;
InternetReadFile(hopen,buff,sizeof(buff),&dwRead);
CHAR *str=new CHAR [dwRead];
memset(str,0,dwRead);
buff[dwRead]=0;
strcpy(str,buff);
int len=strlen(str);
for (int k=0;k<len;k++)

if (str[k]=='[')

break;


k++;
for (int j=0;j<len;j++)

if (str[j]==']')

break;


j++;
char ip[30]=0;
for (int q=0;q<j-k-1;q++)

ip[q]=str[k+q];


FILE *pfile=NULL;
printf("写入IP数据...\n");
pfile=fopen("D:\\CS.txt","w");
char strfile[100]=0;
sprintf(strfile,"%s %s %s","127.0.0.1",ip,"27015");
fwrite(strfile,sizeof(char),strlen(strfile),pfile);
fclose(pfile);
printf("IP:%s...\n",ip);
CloseHandle(hnet);
CloseHandle(hopen);


void CALLBACK TimerProc(
HWND hwnd,
UINT uMsg,
UINT idEvent,
DWORD dwTime )


update();


void main()


printf("已经启动IP更新...每分钟更新一次...\n");
SetTimer(NULL,1,1000*60,(TIMERPROC)TimerProc);
MSG msg;
while (GetMessage(&msg,NULL,0,0))

TranslateMessage(&msg);
DispatchMessage(&msg);

参考技术A 可以尝试一下GetIpAddrTable 这个函数,
参考这两个网址吧,
http://msdn.microsoft.com/en-us/library/aa365949(VS.85).aspx

http://msdn.microsoft.com/en-us/library/aa366309(VS.85).aspx
参考技术B 百度一下“花生壳”。注册一个免费的域名,在CS客户端添加主机时,不要添加IP地址,而是输入你注册的域名和你启用的端口号,中间还有个冒号。

另外,如果你用路由器上网,或者在某个局域网,还需要设置路由器的端口映射。将CS端口映射到你的机器上。
参考技术C 目前我还没发现网上有这种软件。我自己的方法是用域名解析,先去伸请个免费域名,然后挂在服务器上,方便快捷。 参考技术D 吹,不可能,最多只有400分,怎么可能有500分呢????骗子! 第5个回答  2008-11-03 关注

用Linux命令行获取本机外网IP地址

引言:目前获取ip的方法中,ifconfig和ip获取函数得到的都是内网ip。有时候需要获取外网ip,目前通用的做法,是向外部服务器发送请求,解析外部服务器响应,从而得到的自己的外网ip。linux下的 curl可以替我们完成这些工作,当然,不怕麻烦的话,可以自己分析http协议,自己实现以上过程。如果熟悉python的话,那就更简单了,就像我们所知道的,python总是有现成的库函数可供我们调用。一下总结几种获取外网ip的方法,以供查询,资料来源互联网。

 

$ curl ip.cn
$ curl ifconfig.me (目前已经失效)
$ curl ident.me  又可细分为 v4.ident.me 和 v6.ident.me
$ curl icanhazip.com
$ curl ipecho.net/plain
$ curl whatismyip.akamai.com
$ curl myip.dnsomatic.com
$ curl icanhazip.com
$ curl ip.3322.net
$ curl ip.6655.com/ip.aspx

 

 

如果需要返回IP和地区以及运营商的话可以使用:

$ curl cip.cc   ------>纯IP的话  $ curl  ip.cip.cc    (http://www.cip.cc/) 推荐
$ curl ip.6655.com/ip.aspx?area=1

 

以上是关于获取本机外网IP 更新到D盘的文件 追500高分的主要内容,如果未能解决你的问题,请参考以下文章

vc获取本机外网IP,怎么获取,求源码。

获取本机外网ip和内网ip

Java 获取IP工具类Vo类整理记录

Java 获取IP工具类Vo类整理记录

请问 C# 如何获取外网IP?

java中如何获取到本机的外网ip地址?