《获取主机名和IP地址.》.doc
文本预览下载声明
目录
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(自动完成功能)以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及建置系统以预编译头文件、最小重建功能及累加连结著称。这些特征明显缩短程式编辑、编译及连结花费的时间,在大型软件计划上尤其显著该函数把本地主机名存放入由name参数指定的缓冲区中。返回的主机名是一个以NULL结束的字符串。主机名的形式取决于Windows Sockets实现-它可能是一个简单的主机名,或者是一个域名。然而,返回的名字必定可以在gethostbyname()和WSAAsyncGetHostByName()中使用。如果没有错误发生,gethostname()返回0。否则它返回SOCKET_ERROR返回对应于给定主机名的包含主机名字和地址信息的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_INETh_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的使用。
char FAR * inet_ntoa( struct in_addr in);
该函数将一个IP转换成一个互联网标准点分格式的字符串in为一个表示Internet主机地址的结构如果正确,返回一个字符指针,指向一块存储着点分格式IP地址的静态缓冲区(同一线程内共享此内存);错误,返回NULL。
BOOL TextOut(
HDC hdc,
int nXStart,
int nYStart,
LPCTSTR lpString,
int cbString
);
Hdc:设备环境的句柄
nXStart 指定用于字符串对齐的基准点的逻辑X坐标。
nYStart指定用于字符串对齐的基准点的逻辑Y坐标。
lpString指向将被绘制字符串的指针。此字符串不必为以\0结束的,因为cbString中指定了字符串的长度。
cbString指定了字符串的长度该函数用当前选择的字体、背景颜色和正文颜色将一个字符串写到指定位置如果函数调用成功,返回值为非零值。如果函数调用失败,返回值为0。
void *memcpy(void *dest, const void *src, size_t n);
该函数从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起
显示全部