预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

本次实验要求完成以下内容: 要求: 将上面程序用vi录入并编译运行,老师查看运行结果。 为程序加注释,重点解释输出结果的含义,写在活页纸上下课前上交; 重点提示:上交材料雷同者,全部作废,视为没有完成实验。 一、运行结果 二、程序注释 Main() { inti; //定义一个名为i的整形变量 structsockaddr_inserver; //定义一个名为server的sockaddr_in类型的结构体 bzero(&server,sizeof(server)); //为网际套接字地址结构server设置初始值0 printf(“Yourserver’sipinitmemis\n”);//输出Yourserver’sipinitmemis字符串并换行 for(i=0;i<sizeof(server);i++) //以十六进制形式输出套接字地址结构server的初始值 { Printf(“%02x”,*((unsignedchar*)(&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,端口号为1234 printf(“Yourserver’sipsin_familyis%d\n”,server.sin_family); //以整数形式输出网际套接字地址结构中sin_family成员的值 printf(“Yourserver’sipis%s,portis%d\n”,inet_ntoa(server.sin_addr),htons(server.sin_port)); //以字符串的形式输出网际套接字地址结构中sin_addr成员的值,以整数形式输出网际套接字地址结构中sin_port成员的值 printf(“Yourserver’slengthis%d\n”,sizeof(server)); //以整数形式输出该套接字地址结构的大小 printf(“Yourserver’sipmemis\n”);//输出Yourserver’sipmemis字符串并换行 for(i=0;i<sizeof(server);i++) //以十六进制形式输出网际套接字地址结构server的值 { printf(“%02x”,*((unsignedchar*)(&server)+i)); } return; } 三、输出结果解释 第一行结果: 执行printf(“Yourserver’sipinitmemis\n”);之后,printf函数输出字符串Yourserver’sipinitmemis并换行 第二行结果: 本行结果为网际套接字地址结构server设置初始值0之后的结果; 此次结果显示为32个零,其中sin_family成员的值,占2个字节,对应为0000;sin_port成员的值,占2个字节,对应为0000;sin_family成员的值,占4个字节,对应为00000000;最后十六个零为sin_zero成员的值,占8个字节,对应为0000000000000000。 其中网际套接字地址结构体中共包含5个成员,sin_len是长度成员,占一个字节,存储套接字地址结构的长度,但不是所有系统都支持,有了它可以简化变长套接字地址结构的处理。一般情况下不需要设置它和检查它,除非涉及到路由套接字,本处并没有涉及到路由套接字所以只有32个零,否则可能是34个零。 bzero函数的原型是externvoidbzero(void*s,intn),其中s为要置零的数据的起始地址,n为要置零的数据的字节个数,函数功能是将s所指的内存区域前n个字节置为0,且包括‘\0’。 在执行过bzero函数之后,将server所指的内存区域中的字节全部置为0,故输出后的结果全部为0。 第三行结果: 本行结果为网际套接字地址结构中的成员sin_family的AF_INET的默认值2 sin_family是Internet地址族,在IPv4中是AF_INET,其默认值为2。 Winsock2.h中#defineAF_INET2//internetwork:UDP,TCP,etc. 第四行结果: 本行结果为网际套接字地址结构中的成员ip地址的值和端口号的值。 inet_ntoa函数的作用是将网际套接字地质结构中存储的32位的网络字节序的二进制IP地址转换成人们通用的点分十进制的IP地址并输出为127.0.0.1 其中,127.0.0.1