Windows黑客编程基础
来源:互联网
作者:west263.com
时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
//这是获取主机名,假如获得主机名成功的话,将返回一个指针,指向hostinfo,hostinfo为PHOSTENT型的变量,下面即将用到这个结构体
LPCSTR ip = inet_ntoa (*(struct in_addr *)*hostinfo-〉h_addr_list);
//调用inet_ntoa()函数,将hostinfo结构变量中的h_addr_list转化为标准的点分表示的IP地址(如192.168.0.1)
printf("%s/n",ip);//输出IP地址 } }
WSACleanup( );//卸载Winsock库,并释放任何资源 } }
int main(int argc, char* argv[])//主函数,程式的入口
{
CheckIP();//调用CheckIP()函数获得、输出IP地址
return 0;//由于main()定义为int型,所以应带回一个int型的数值
}
程式运行界面如图3所示:
图3
下面接着来看看在C Builder 下如何实现,其实两者的思想是相同的,只是在C Builder下实现的界面友好点而已,实现方法:打开C Builder 5,默认情况下已新建一个工程,保存这个工程文档就能够了,构造如下面图4所示的界面,在相应之处添入下面的代码即可。
程式代码:
//包含头文档
#include
#include
#pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{ }
void TForm1::GetHostIpAddress()
{// GetHostIpAddress()获得本机IP地址
struct hostent *thisHost;
struct in_addr in;
char MyName[80];
char *ptr;
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 0 );
err = WSAStartup( wVersionRequested, &wsaData );
if( err != 0 )
return;
if(LOBYTE( wsaData.wVersion ) != 2
HIBYTE( wsaData.wVersion ) != 0 )
{ WSACleanup( );
return; }
if(gethostname(MyName,80)==SOCKET_ERROR)
return;
if(!(thisHost=gethostbyname(MyName)))
return;
memset((void *)&in,sizeof(in),0);
in.s_addr=*((unsigned long *)thisHost-〉h_addr_list[0]);
if(!(ptr=inet_ntoa(in)))
return;
WSACleanup( );
Edit1-〉Text=AnsiString(ptr);}
void __fastcall TForm1::FormCreate(TObject *Sender)
{ GetHostIpAddress();}
void __fastcall TForm1::Button1Click(TObject *Sender)
{Close();//添加一个“确定”按钮,点击即关闭程式。}
程式在 C Builder 5 下编译通过,运行界面如图4所示。通过比较您会发现他们是大同小异的,对于同一程式,两者工具各有秋千,至于选择哪种由您决定,最好是两者相得益彰。
图4
“临渊羡鱼,不如退而结网”,虽说“通往电脑的路不止一条”,然而对于编程,道路却只有一条,就是:动手去做,亲身实践。
兄弟,愿您成为一个出色的舵手,用代码去驽驾电脑的世界,用编程去填充七彩的人生!
参考书籍:
《C Builder 5 编程实例和技巧》,机械工业出版社
《WIN 编程须知》,病毒兄的作品,再次感谢病毒兄
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



