- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《计算机网络与通信》获取主机名和IP地址
目录
1 绪言 1
2方案的论证及选择 1
3 重要结构和函数 1
3.1 函数gethostname 1
3.2 函数gethostbyname 2
3.3 函数inet_ntoa 2
3.4 函数TextOut 3
3.5 函数memcpy 3
3.6 WSAData结构 3
4 设计过程 5
4.1 新建对话框 5
4.2 添加控件 5
4.3 添加成员变量 6
4.4 为控件添加映射消息 6
4.5 定义函数 7
4.6 添加代码 7
4.7 设计icon并运行程序 10
5 程序运行结果及分析 10
6 心得体会 11
参考文献 11
附录1 sanjinDlg.cpp程序 12
附录2 头文件sanjinDlg.h 18
1 绪言
Microsoft Visual C++是Microsoft公司推出的开发Win32环境程序,面向对象的可视化集成编程系统。它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2,WinSock网络、3D控制界面。它以拥有“语法高亮”,IntelliSense(自动完成功能)以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及建置系统以预编译头文件、最小重建功能及累加连结著称。这些特征明显缩短程式编辑、编译及连结花费的时间,在大型软件计划上尤其显著。
在网络编程中,像获取主机名和IP地址这样的基本应用是必不可少的,这些基本的应用通过适当改变可以很容易地应用到网络软件中。因此,获取主机名和IP地址是用现实意义的。
2方案的论证及选择
方案一:用Windows API进行设计。Windows API可以很容易获取主机名和IP地址,但是在窗口设计是却显得比较繁琐。
方案二:用MFC进行设计。用MFC设计可以更容易的设计显示界面,在获取主机名和IP地址方面也比不复杂。
综上,选择方案二。
3 重要结构和函数
3.1 函数gethostname
函数原型为:
int gethostname(char *name,int namelen);
其中,参数name是一个指向将要存放主机名的缓冲区的指针,namelen用于指定缓冲区的长度。该函数把本地主机名存放入由name参数指定的缓冲区中。返回的主机名是一个以NULL结束的字符串。主机名的形式取决于Windows Sockets实现-它可能是一个简单的主机名,或者是一个域名。然而,返回的名字必定可以在gethostbyname()和WSAAsyncGetHostByName()中使用。如果没有错误发生,gethostname()返回0。否则它返回SOCKET_ERROR。
3.2 函数gethostbyname
函数原型为:
struct hostent* gethostbyname(const char* addr);
其中,addr为指向主机名的指针,它一般有函数gethostname返回。该函数返回对应于给定主机名的包含主机名字和地址信息的hostent结构指针,该结构的格式如下:
structhostent {
char*h_name;
char**h_aliases;
inth_addrtype;
inth_length;
char**h_addr_list;
#define h_addr h_addr_list[0]
};
其中,h_name是地址的正式名称;h_aliases是空字节-地址的预备名称的指针;h_addrtype地址类型,通常是AF_INET;h_length地址的比特长度;h_addr_list是零字节-主机网络地址指针;网络字节顺序;h_addr - h_addr_list中的第一地址。
需要注意的是gethostbyname()函数属于WinSock API库,而在使用WinSock API之前,必须调用WSA-Startup函数,只有该函数成功返回(表示应用程序与WinSock库成功地建立起连接),应用程序才可以调用其他Windows Sockets DLL中的函数。当程序将要结束时,又必须调用WSACleanup 函数进行清理工作,以便释放其占用的资源。WSACleanup 函数用来结束Windows Sockets DLL的使用。
3.3 函数inet_ntoa
函数原型为:
char FAR * inet_ntoa( struct in_a
文档评论(0)