网络编程实验四_第1页
网络编程实验四_第2页
网络编程实验四_第3页
网络编程实验四_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本次实验要求完成以下内容:要求:1 将上面程序用vi录入并编译运行,老师查看运行结果。2 为程序加注释,重点解释输出结果的含义,写在活页纸上 下课前上交;重点提示:上交材料雷同者,全部作废,视为没有完成实验。一、运行结果二、程序注释Main()int i;/定义一个名为i的整形变量struct sockaddr_in server;/定义一个名为server的sockaddr_in类型的结构体bzero(&server,sizeof(server);/为网际套接字地址结构server设置初始值0printf(“Your servers ip init mem is n”); /输出Yo

2、ur servers ip init mem is字符串并换行for(i=0;i<sizeof(server);i+)/以十六进制形式输出套接字地址结构server的初始值Printf(“ %02x”,*(unsigned char*)(&server)+i);printf(“n ”);server.sin_family=AF_INET;server.sin_port=htons(PORT);server.sin_addr.s_addr=inet_addr(“127.0.0.1”); /以上三行为套接字地址结构中的成员赋值,客户端要建立连接的服务器IP地址为127.0.0.1,端

3、口号为1234printf(“Your servers ip sin_family is %dn”,server.sin_family); /以整数形式输出网际套接字地址结构中sin_family成员的值printf(“Your servers ip is %s,portis %dn”,inet_ntoa(server.sin_addr),htons(server.sin_port); /以字符串的形式输出网际套接字地址结构中sin_addr成员的值,以整数形式输出网际套接字地址结构中sin_port成员的值printf(“Your servers length is %dn”,sizeof(

4、server); /以整数形式输出该套接字地址结构的大小printf(“Your servers ip mem is n ”); /输出Your servers ip mem is字符串并换行for(i=0;i<sizeof(server);i+)/以十六进制形式输出网际套接字地址结构server的值printf(“ %02x ”,*(unsigned char*)(&server)+i);return;三、输出结果解释第一行结果:执行printf(“Your servers ip init mem is n”);之后,printf函数输出字符串Your servers ip i

5、nit mem is并换行第二行结果:本行结果为网际套接字地址结构server设置初始值0之后的结果;此次结果显示为32个零,其中sin_family成员的值,占2个字节,对应为00 00; sin_port成员的值,占2个字节,对应为00 00; sin_family成员的值,占4个字节,对应为00 00 00 00;最后十六个零为sin_zero成员的值,占8个字节,对应为00 00 00 00 00 00 00 00。其中网际套接字地址结构体中共包含5个成员,sin_len是长度成员,占一个字节,存储套接字地址结构的长度,但不是所有系统都支持,有了它可以简化变长套接字地址结构的处理。一般

6、情况下不需要设置它和检查它,除非涉及到路由套接字,本处并没有涉及到路由套接字所以只有32个零,否则可能是34个零。bzero函数的原型是extern void bzero(void *s,int n),其中s为要置零的数据的起始地址,n为要置零的数据的字节个数,函数功能是将s所指的内存区域前n个字节置为0,且包括0。在执行过bzero函数之后,将server所指的内存区域中的字节全部置为0,故输出后的结果全部为0。第三行结果:本行结果为网际套接字地址结构中的成员sin_family的AF_INET的默认值2sin_family是Internet地址族,在IPv4中是AF_INET,其默认值为2

7、。Winsock2.h中#define AF_INET 2 / internetwork: UDP, TCP, etc.第四行结果:本行结果为网际套接字地址结构中的成员ip地址的值和端口号的值。inet_ntoa函数的作用是将网际套接字地质结构中存储的32位的网络字节序的二进制IP地址转换成人们通用的点分十进制的IP地址并输出为127.0.0.1其中,127.0.0.1转换为32位的网络字节序的二进制IP地址为:1111111.00000000.00000000.0000000132位的网络字节序的二进制IP地址转换为点分十进制的IP地址为:127.0.0.1PORT在程序的开头被声

8、明为默认值1234,并在server.sin_port=htons(PORT)语句中被转换成网络字节序给sin_port赋值。htons函数的作用是将16位的短整型数从主机字节序转换成网络字节序并以整形形式输出为1234第五行结果:本行结果为网际套接字地址结构server的大小16个字节sockaddr_in结构体中包含5个成员,其中sin_len是长度成员,存储套接字地址结构的长度,但不是所有系统都支持,一般情况下不需要设置它和检查它,除非涉及到路由套接字。本程序并没有设置这个成员,所以只有16个字节。其中sin_family成员的值,占2个字节, sin_port成员的值,占2个字节, sin_family成员的值,占4个字节, sin_zero成员的值,占8个字节,共16个字节。第六行结果:执行printf(“Your servers ip mem is n”);之后,printf函数输出字符串Your servers ip mem is并换行第七行结果:本行结果输出为02 00 04 d2 7f 00 00 01 00 00 00 00 00 00 00 00共16个字节,以十六进制形式输出,其中02 00这两个字节表示的是成员sin_family的值,以小端方式存储,在以上的结果输出中,以十进制形式输出的结果为2,而在内存中,其值占两个字节

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论