版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验三、WINSOCK套接字编程实验报告一、实验目的:用C或JAVA语言编写客户端、服务器程序,实现基于TCP或UDP的网络通信数据传输服务,熟悉基于TCP或UDP的Socket编程原理。二、实验环境:建立在TCP/IP网络体系结构之上计算机网络实验环境。各计算机除了安装TCP/IP软件外,还安装了TCP/IP开发系统。计算机具有Windows环境中套接字socket的编程接口功能,可为用户提供全网范围的进程通信功能。三、实验环节(1)运营指导书中给出的参考程序,分析实验结果,并回答问题(1)-(3)(2)根据给定参考程序修改代码,完善修改服务器和客户端的功能。并回答问题(4)—(5)四、实验结果分析(1)为什么在服务器和客户端要包含winsock2.h文献?答:由于无论服务器端程序还是客户端程序都要建立socket,假如不包含winsock2.h文献就无法创建socket,没有socket服务器与客户端就无法通信。(2)为什么在服务器和客户端程序中要加入#pragmacomment(1ib,"ws2_32.lib〃)语句,假如不加会出现什么问题?if(rvai==0)°°[ime(&timeD):D-localtime_(&tjmeD);一min上.fC\n%d;%d;%d\n%s\n「一hound->tmm-in.p—2[现S£Cbuf「ec);。printf(n-->%s\nn,buf);closesocket(msgsock);}while(TRUE);/*由于这个程序已有了一个无限循环,所以套接字“sock”历来不显式关闭。然而,当进程被杀死或正常终止时,所有套接字都将自动地被关闭。*/closesocket(msgsock);return0;1套接口号为:349020:22:7-->abcde^=gHIJKLMN20:22:—>oPqrSt20:22:52—>UvWxVz20:24:11-->hclloWORLD⑸请具体说明此实验在设计及运营时碰到的问题和解决办法,及实验体会及建议。在实验设计的过程中会碰到很多的问题,如实现各种功能时,实现顺序的问题,以及时间计算过程中的各种指针存在的存储空间的冲突问题。在调用各种函数的过程中会碰到不能使用的状况,是由于源程序中没有包含使用该函数的头文献。实验过程中不能对的的结识各个函数的功能,以及灵活地使用结构体,对建立连接的过程没有一个很清楚地把握,通过查询各种资料和同学之间互相交流,解决了一些难以下手的问题,通过本次实验,socket编程有了一个深刻的了解,对其过程的建立也有了一个大体的了解。答:由于要告诉链接器生成exe时链接这个库中的函数。当然也可以通过别的方法告诉链接器。就是让程序在链接的时候将ws2_32.1ib这个文献链接进来,假如没有这句话,你也没有在工程的ClassWizerd选项卡的Link选项卡中加入这个文献的时候,链接就会提醒某些函数没有被链接到!有了这个文献一般就是提供某一些函数的实现代码,只但是不是以字符形式存储的!(3)为什么在服务器和客户端程序中要使用WSAStartup函数,假如不用,程序会有什么问题?答:WSADATAwsaData;wVersionRequested=MAKEWORD(2,2);err=WSAStartup(wVersionRequested,&wsaData);第一个参数是版本号即2.2版本,第二个参数返回socket的版本信息操作系统运用第二个参数返回请求的Socket的版本信息。当一个应用程序调用Startup函数时,操作系统根据请求的Socket版本来搜索相应的Socket库,然后绑定找到的Socket库到该应用程序中。以后应用程序就可以调用所请求的Socket库中的其它Socket函数了。为了在应用程序当中调用任何一个WinsockAPI函数,一方面第一件事情就是必须通过WSAStartup函数完毕对Winsock服务的初始化,因此需要调用WSAStartup函数。使用Socket的程序在使用Socket之前必须调用WSAStartup函
数,假如不调用后面socket无法执行。(4)修改后的程序完毕实现了什么功能,附上修改后的源代码。(修改或填加的代码用波浪线标注,并填加注释),并附上实验截图客户端:实现本地IP自动检测,并且由用户键入想要通信的服务器地址,实现大小写互相转换后送达服务端。源代码如下:inc1udenstdafx.h"报&&L旦&£&注incJude<ctYDeh)include<stdio.h>include<stdlib.h>include<errno.h>#inelude<winsock2.h>#pragmacomment(1ib,"ws2_32.1ibn)#definePORT3490/*客户机连接远程主机的端口*/#defineMAXDATASIZE100/*每次可以接受的最大字节*/一在defneTRUE1_TCHAR*argv[])_TCHAR*argv[])_TCHAR*argv[])WORDwVersionRequested;int_tmain(intargc,_TCHAR*argv[])WORDwVersionRequested;wsaData;WSADATAwsaData;fd;fd;structsockaddr_inservaddr;structhostent*hp;“nt1en,i;ocharbuf[1024]="”;chaJ25-./*进行本地IP检测*/PHOSIENThostinMcwVeIsionReau®t£&亍MAKEW0RD(2,〜2);发m二亶SASL@r匚旦p…(…wV_e_isi_Q_nRequestem.告更工且口趾且.)工二一if(_WSAStaituD(MAKEWQRD(20),&wsaData)0)1jf((hostinf。U笔fJhQStbyna®e(name))!三NULL)L…ip三—Lnetntoa…(大(stmL.一inadd」*)*h。slin_fo-Lh且《4匚」[»£)二0001。「WSAaeanup():d区侬血:左机出地址为胸箍△服务器住地址\am;一gClS(lQjp);/*循环保证多次向服务器端发送信息*/旦91if(err!=0)return-1;if((fdif((fdif((fdsocket(AF_INET,SOCK_STREAM,0))<0)printf(“无法仓ij建套接口!)if((fdexit(2);}servaddr.sin_family=AF」NET;servaddr.sin_port=htons(PORT);servaddr.sin_addr.S_un.S_addr=inet_addr(n127.0.0.1");memset(servaddr.sin_zero,0,sizeof(servaddr,sin_zero));//和服务器创建连接rva1=connect(fd,(sockaddr*)&servaddr,sizeof(servaddr));if(rva1<0){〃创建连接失败printf("无法连接!”);exit(3);)else{memset(buf,0,1024);printf(”请输入scanf(”%s”,&buf);〃实现大小写字母的互相转换/£Qwj.sKn;一L±Lbuf「il八二32:
//向服务器发送信息。rva1=send(fd,buf,strlen(buf)+L0);if(rval<0)printf("警告!!!输入错误!)}closesocket(fd);]while(TRUE)一二exit(5);return0;本机IP地址为192.168.200.24,输入服务器IP地址请输入:ABCDEFGhijklmn请输入:OpQRsT请输入:WwXyZ请输入:HELLOworld服务端:实现接受信息的时间控制,能显示出接受信息的具体时间,源代码如下:include"stdafx.h'1include<stdio.h>#include<stdlib.h>include<errno.h>include<winsock2.h>在influaw.W.t」rp辱incLegpiQcessh〉:.#pragmacomment(lib,”ws2—32.1ibn)#defineMYPORT3490/*定义用户连接端口*/#defineBACKLOG10/*多少等待连接控制*/#defineSERVER」P_ADDRH127.0.0.1”/*服务器的IP地址*/SOCKETsock,msgsock;intSOCKETsock,msgsock;intint1ength=0;intstructsockaddr_inserver;structsockaddrtcpaddr;charbuff1Q24]="二bufrec「10241三,intrval=0,len=0,err=0;WORDwVersionRequested;WSADATAwsaData;ll臭mi侬呢structtm*p;1d£L.2国邑皎生上或工室马邑Q.L(Duf喀)".〜〜if〜((「vaJL_己1%丫(卬§猿鸟9£«工f£££,「工iZ「eQf(buQQLfofQI(:;).;ifrylL.壬〜0)±口曰9奥」「工」一口&一(期1mep);..2空二;%a;~「%d\n疑s\_n」lD二Ntni—b一。一旦.一旦上;&二之一tn)—min—…P一二2t二以上一&£zJbufi£c);si“-whi」CL);1int_tmain(intargc,_TCHAR*argv[])(/*指定socket版本,否则创建socket失败,即使创建socket返回值不为一1,但是bind时会失败*/wVersionRequested=MAKEWORD(2,2);err=WSAStartup(wVersionRequested,&wsaData);if(err!=0)return-1;/*建立套接字*/sock=socket(AF」NET,SOCK.STREAM,0);if(sock<0)(perror(nopeningstreamsocket1');exit(1);)/*使用任意端口命名套接字*/server.sin_fami1y=AF」NET;server.sin_port=htons(MYPORT);server.sin_addr.s_addr=inet_addr(SERVER_IP_ADDR);memset(server.sin_zero,0,sizeof(server.sin_zero));〃将服务器地址与socket绑定在一起rval=bind(sock,(structsockaddr*)&server,sizeof(server));if(rval<0)perror
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度中小企业发展贷款合同
- 2024年度版权质押合同with标的:影视作品
- 消灭昆虫制剂市场发展现状调查及供需格局分析预测报告
- 婴儿裤内衣市场需求与消费特点分析
- 2024年度商业秘密保护合同保密义务与违约
- 烟用香精市场发展现状调查及供需格局分析预测报告
- 淋浴喷头市场发展预测和趋势分析
- 2024年度智能工厂设计与建设定制合同
- 身体用闪光粉市场发展现状调查及供需格局分析预测报告
- 04版学校餐饮与零售服务合同
- 休闲生态农业观光园建设项目财务分析及效益评价
- 2024年诊所医生聘用合同
- 肺心病的护理诊断及措施
- 国际金融(英文版)智慧树知到期末考试答案2024年
- 2024年《药物临床试验质量管理规范》(GCP)网络培训题库
- 辽宁省名校联盟2024届高三下学期3月份联合考试化学
- 《美术课程标准解读》课件
- 糖尿病高渗性昏迷护理查房
- 教学能力比赛-教学实施报告(中职公共基础-英语)
- 第五章排球大单元教学设计课时教学设计人教版初中体育与健康七年级全一册
- 发展生涯报告
评论
0/150
提交评论