《网络编程技术》实验指导书

2019-03-27 16:16

《网络程序设计》实验指导书

郭建伟

1

实验一 SOCKET基本编程

1、 实验目的

1、掌握使用LINUX环境下GCC编译器的基本方法; 2、掌握SOCKET套接字的基本编程模板;

3、掌握套接字基本编程,掌握点分十进制和网络二进制IP地址之间的转换。 4、通过使用gethostbyname和gethostbyaddr来获取本地和远程用户的地址信息。

2、 实验要求

1、认真阅读和掌握本实验相关的知识点。 2、上机编写运行本程序。

3、保存和打印出程序的运行结果,并结合程序进行分析。 3、 注意事项:

在LINUX系统上为每个用户创建一个目录,专门用于编译和运行实验程序。 4、 实验内容

(1)点分十进制和网络二进制之间的转换 #include #include #include #include #include #include #include

int main (void) {

char *src; const char *ch; int rc;

2

struct in_addr inet_pton_r;

memset(&inet_pton_r,0,sizeof(inet_pton_r)); src = (char *)malloc(20*sizeof(char)); // 输入IP地址

printf(\ scanf(\

//点分十进制地址格式--->网络字序的二进制格式 rc = inet_pton(AF_INET,src,(void *)&inet_pton_r); if (rc > 0) {

printf(\ } else {

perror(\ }

//网络字序的二进制格式--->点分十进制地址格式 ch

=

inet_ntop(AF_INET,(void

*)&inet_pton_r.s_addr,src,INET_ADDRSTRLEN); if (ch == NULL) {

perror(\ } else {

printf(\ } free(src); return 0;

3

}

(2)使用gethostbyname和gethostbyaddr来获取本地和远程用户的地址信息 #include #include int main(int argc, char **argv) {

char *ptr,**pptr; struct hostent *hptr; char str[32]; char ipaddr[16]; struct in_addr *hipaddr;

/* 取得命令后第一个参数,即要解析的IP地址 */ ptr = argv[1];

/* 调用inet_aton(),ptr就是以字符串存放的地方的指针,hipaddr是in_addr形式的地址 */

if(!inet_aton(ptr,hipaddr)) {

printf(\ return 1; }

/* 调用gethostbyaddr()。调用结果都存在hptr中 */ if( (hptr = gethostbyaddr(hipaddr, 4, AF_INET) ) == NULL ) {

printf(\

return 1; /* 如果调用gethostbyaddr发生错误,返回1 */ }

4

/* 将主机的规范名打出来 */

printf(\

/* 主机可能有多个别名,将所有别名分别打出来 */ for(pptr = hptr->h_aliases; *pptr != NULL; pptr++) printf(\ alias:%s\\n\ /* 根据地址类型,将地址打出来 */ switch(hptr->h_addrtype) {

case AF_INET: case AF_INET6: pptr=hptr->h_addr_list;

/* 将刚才得到的所有地址都打出来。其中调用了inet_ntop()函数 */ for(;*pptr!=NULL;pptr++)

printf(\ address:%s\\n\ break; default:

printf(\ break; } return 0; } (3)

#include #include int main(int argc, char **argv) {

char *ptr,**pptr; struct hostent *hptr;

5


《网络编程技术》实验指导书.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:【温州2019届高三适应性测试】2018年8月温州市普通高中选考适应

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: