版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学生学号17实验课成绩学生 实 验 报 告书实验课程名称通信原理开 课学 院计算机科学与技术学院指导教师姓名刘维学 生姓 名陈鑫宇学生专业班级软件工程41201520 6学年第2学期?实验课程名称:_通信原理_实验项目名称采用winsoc 在有线局域网上得点- 点通信实验成绩实 验者陈鑫宇专业班级软件 401组别同 组 者叶旺实验日期年月日一部分 :实验预习报告( 包括实验目得、意义,实验基本原理与方法,主要仪器设备及耗材,实验方案与技术路线等)实验目得与要求1. “采用 wisok 在有线局域网上得点点通信”2. 熟悉 vb6、 0 得控件与界面设计 , 进而熟悉 winsock 得有关控件
2、及编程方法。3. 在了解所用得两个工作站与服务器得 ip 地址后 , 采用 vb6、得控件与 wisock控件编写并调试在有线局域网上得点点通信程序。4. 具有点对点通信功能,任意客户端之间能够发送消息。编译语言与环境1、编程语言 c/c+等均可;本次实验采用+语言版本2、安装 s201或更高版本得windo s 系统 p机网络编程就是通过使用套接字来达到进程间通信目得得编程,socket编程就是网络编程得主流工具,sock i就是实现进程间通信得一种编程设施, 也就是一种为进程间提供底层抽象得机制, 提供了访问下层通信协议得大量系统调用与相应得数据结构。具体流程如上图所示.1、建立连接1)服
3、务程序调用socke创建一个新得套接字, 并在传输层实体中分配表空间, 返回一个文件描述符用于以后调用中使用该套接字; 调用 bn将一个地址赋予该套接字,使得远程客户程序能访问该服务程序; 调用 lis en 分配数据空间,以便存储多个用户得连接建立请求;调用 acce t 将服务程序阻塞起来 , 等待接收客户程序发来得连接请求 当传输层实体接收到建立连接得tpu 时, 新创建一个与原来得套接字相同属性得套接字并返回其文件描述符。服务程序创建一个子进程处理此次连接 , 然后继续等待发往原来套接字得连接请求。2) 客户程序调用 socke创建一个新得套接字, 并在传输层实体中分配表空间 , 返回
4、一个文件描述符用于在以后得调用中使用该套接字; 调用 onnc阻塞客户程序,传输层实体开始建立连接, 当连接建立完成时, 取消阻塞 ;2、数据传输双方使用 s d 与 ec v完成数据得全双工发送。、释放连接每一方使用 close 原语单独释放连接。关键代码示例 :服务器端:/ 定义服务器端 c etsockserv r = soce (af_i , sock tr am,0 ) ; /设置服务器端 oc et?addrserv r、 sin_a d、 _、 s_addr = to l( nad r_a y); /本机 i ? dd ser、 in_fa ly = f_ n t; ddr ev
5、er、 sin_port = ns(6000);? /将服务器s c et 绑定在本地端口b nd( ockserver, ( socaddr) &addrse ve,siz f(sockad r); isten 监听端口?l ten(so kser er, 10); 0 为等待连接数目 rintf( ”服务器已启动 : n 监听中、 ” ); ?len = si (sockaddr);?whi (1) ?/acce t 会阻塞进程,直到有客户端连接上来为止?sock lientac e (soc serve , (socka r* ) &a lien ,&le );?/当客户端连接上来时,拼
6、接字符串?s n f( endbuf, ”欢迎p:%s 得用户连接, 这里就是陈鑫宇得服务器 n” ,ine _ntoa(addrcl ent、 _addr);,欢迎使用?/ 向客户端发送字符串 end( ockclient, se b f,/获取客户端返回得数据trle( sendbu ) + 1,) ;?re v(socclient , recv , 10, );? / 打印客户端返回得数据?print (” %sn” ,recvbu );/关闭 s ket? losesock t(sockcl ent);客户端:新建服务器端 scoet? sockserv r = o ket(af_in
7、 t, o k_stre m ,0);目标 / 定义要连接得服务端地址ad server、 si ddr 、 s_un、 s addrip (00、 64、 5、 119 就是本机地址)= net_ ddr(10 、 139、 14、 80” ); /addrs r er、 sin_f ly= af inet ;?ad rsrv r、 s n_ ort = tons( 000); /?让 sockclient 连接到服务端 协议类型就是连接端口 123inet?co nect( sock erver,(socka dr * )& dr erv r, sizeof( ck ddr) ;?从服务端
8、获取数据? ec( cksere , r c buf, 1 0, 0); / 打印数据?printf( 服务器端输入: , recvbuf ) ;?mes g = 大家好 ,我就是叶旺”;prin f (向服务器发送:sn, message);?/发送数据到服务端 nd( ocks rver, m ssag,/ 关闭 soc etstn( m ssage) ,0); lo soket(s c ser er);?w c enu( );第二部分 :实验过程记录 (可加页 )(包括实验原始数据记录,实验现象记录,实验过程发现得问题等)服务器 ip 地址为 92 、168、 1、110客户端发送得信息
9、成功传输到了服务器并显示了出来,第三部分结果与讨论 (可加页)一、实验结果分析(包括数据处理、实验现象分析、影响因素讨论、综合分析与结论等)打开服务器程序, 然后点击开始通信按钮, 打开客户端程序在客户端输入数据 ,数据成功从客户端传输到了服务器端,并成功显示了出来,实验成功二、小结、建议及体会通过本次实验能够感受到网络在实际当中得运用, 使我对网络编程有了更深得概念。同时让我发现自己知识结构得欠缺。虽然基本功能已经实现,但还就是存在很多不稳定得问题尚待解决。此次实验就是对 oke得一个应用, 让我更深得了解了socket 函数得作用及使用方法。实验过程中遇到了很多得问题 , 例如 : 程序只
10、能通信一次 . 刚开始我以为建立得 socket 套接口只要建立一次并更新连接地址就可以多次使用 . 当初不知道问题存在得在于这 , 在程序加入很多错误报告代码 , 发现再客户端再次 connec得时候返回负值。在网上查瞧很多相关代码之后 , 发现问题所在 , 把建立 socke得代码写进客户端得循环体中,每次通信都重新建立so ket 套接口就可以了。采用 nso k 在无线局域网上得点- 点群发通实验成绩实验项目名称信实 验 者陈鑫宇专业班级软件 401组别同 组 者叶旺,杨彪实验日期年月日一部分 :实验预习报告 (包括实验目得、意义 ,实验基本原理与方法,主要仪器设备及耗材,实验方案与技
11、术路线等)实验目得与要求1、“采用 winok 在无线局域网上得点点群发通信、修改实验 1 得界面设计 , 设计为多个接收地址得群发界面 ( 因为群发就是一对多得循环点点通信 ), 并修改相应得程序。3、在了解所用得 3 个工作站与服务器得 i 地址后 , 采用 b6、得控件与 wino控件编写并调试在无线局域网上得点 - 点群发通信程序。编译语言与环境1、本次实验采用c+编程语言版本2、安装 vs 1得 ndows系统 pc 机问题分析点到群得通信就就是客户端将消息发送至多个服务器端。相当于在客户端加入一个循环 , 依次给不同 i 得服务器发送消息。在实验一得基础上 , 修改服务器端得消息响
12、应方法可以实现点到群得通信。实验一中点到点得通信原理就是, 客户端将消息发送到服务器端,然后服务器端反馈客户端相应得信息。在本实验中可以修改为客户端将消息发送至多个服务器端, 然后接受传送回来得信息。相当于在客户端加入一个循环, 依次给不同 ip 得服务端发送消息。关键代码示例 :服务器端:/ server、cp :实现文件/ #dei _cr ure o_warnings inclu e std fx 、”#in l de 通信实验、 h#nlude”server 、h#nludeafxdi o e、 h”#nclud wisock2、h#ncu es io 、#pragma ent ( b
13、,”ws _32、 b)staticintnum = 0 ;/ serv r对话框implement nmi( server ,cia o ex)ser er : srve ( cwd parent/ =nll* )? :cia og x(idd_dilog , arent )serve : : se vr( )voi erver : ddata xchange(dataecha ge px)? cdal gex:: odataex ng( p ) ;bein_message_map( sever ,cdial gex)? on_b_cliced( idcb tto 1, & erve :on
14、bnclickedbutt n1) on_wm_timer()ed_m ge p( )/ s rver 消息处理程序voi ever :onbncli ke on1( )? / todo: 在此添加控件通知处理程序代码 /settimer( , 00, n l);? in er ; / 错误信息inten;? char sedbuf100 ;发送至客户端得字符串 char recvbu 100 ; / 接受客户端放回得字符串? scket sock eve ; / 服务器端 cket? okad _i ad ser r; / 服务器端地址soc e c et; / 客户端 s keso kad
15、drin addrcl en;/ 客户端地址? waata ws d ; /win k 结构体wordwesi quested; / in o版本? ? ? ?/ 配置 i ow soc 版本? / 初始化 i dow sock rr = ws ta tup (wve requested, &wsadata );f ( r ! = 0)? 启动错误,程序结束r t r ;? /*? 确认 soc dl 支持、 2? * if( loby(wadat 、 vrsion ) != 2 hi ye(w adata、wersio ) != 2)/ 启动错误? ? wsacleanup();/ 终止 w
16、 sok 2ll 得使用? ? eturn ;? ? / 定义服务器端 s cket? sckserv r = socke ( af_i et, so stream, 0);/ 设置服务器端 socet? addrserver 、s ddr 、s_un、s_d r hto l( in d any); 本机 p? adrserver 、 in_ am ly= a_net;adr e er 、s n_port =to s( 6000) ;/ 将服务器 soc et 绑定在本地端口? in ( sock e er ,/l sten 监听端口( ocadr*)&add serve ,sizeo( s
17、kaddr); iste (sockserver , 5); /5 为等待连接数目p ntf( ”服务器已启动 :n监听中、n ) ;l n = ize f (so kaddr) ;? / acc pt 会阻塞进程,直到有客户端连接上来为止? s k ie t = accept(socker er, (sockaddr* ) d client, en) ;? / 当客户端连接上来时 , 拼接字符串? sprintf(send uf , 欢迎 :%s得用户连接,发送成功nt 、sin_addr ));, 欢迎使用n ”, ine ntoa (addrc/ 向客户端发送字符串? send(sock
18、cl ent, sendbuf,str e(s nduf) +,);? / 获取客户端返回得数据? ev( ckclie t, rev uf,100,);? / 打印客户端返回得数据cs r ng text ;? et = r cvbu; tdl itemtext ( d_edit1,text );? / 关闭 oce? cosesocket(sockc i nt);客户端 :#inc udewinsock2、#incl detd o、h#pra ment( lib , w2 2、 ib ) inc d ”s ax、#i clude 通信实验、 h#ncludecl et 、h in lu e
19、 ” fxdia oge、 h / clie t 对话框implm n_ m c( ie t , ia ogex)clint : : cient (cwd*paent / =ull / ):cdiao x( dd_ alog, ppaent )client:cle t () i clie : : od aexchane( cdataex ang * x)? cia ogex::dodataex h g( pdx);begn_m s ge_map( c ient ,cdialogex )on bn_cli ed( i cbut o1, & clieend_messagem ( )/ clie 消
20、息处理程序t :on n lickedutton )voidclien : : onnc ick button1( ) ?/ odo: 在此添加控件通知处理程序代码? har * ip1 ”192、 68、1、 10”;? c r *ip2 = 92、 68、 1、111”;str ng te t;gt l i emtext( idc_ei 1,ext);? i nlen th = text、 getl ngh() ;intnbyt = wide ha mult byt ( cp_ac, 0, tex,nlength,nu l, 0,nll,n l);ch r * ssage= newchan
21、 ytes + 1;memse( mes ge, 0 ,nleng +);ide hartomultibyte(c oecp,0, text,nl ngth , mesage,byte , nul, nul);? essag n y s = 0; n r ;ch rre vbuf10 ;o kets ckclient;/客户端c ktsockd _in addrse ver;/服务端地址wsadata s daa;? wod wvesi nre ted;wverso requested makewr( 2, 2 );e sastart (w ersionr ques d, &ws dat) ;
22、i ( rr!=)? ? r turn ;if( ob te( sadata 、wveri )!=2 |hibt(wsadaa、 wers ) != 2)? ? / 启动错误,程序结束 acea p() ;? ? re n;? / 新建客户端 scoket? sockclie t = ocket( af_ et, sock_steam, 0);? / 定义要连接得服务端地址 dr erver 、sin_addr 、s_un、s_addr = et_addr (ip ); /目标 ip( 5、 0、170、28就是本机地址)addr erver 、 sin_f m=af_inet;/协议类型就是
23、inet d r erve 、 sin_port = ht ns( 00) ; / 连接端口 124? ? ? ? ?/让sockclie t连接到服务端cnect (sock ient,( soc*) add srver,si eof ( sckaddr);? / 发送数据到服务端? nd( ockcl e , m ssag ,st ( mess ge) + ,0);/ 从服务端获取数据? r cv( okclien , recb f ,1 0, );/ 打印数据 e = recvb ;setdgitemtext ( e it2 ,t xt ); / 关闭 ocket? clos socke ( sckc nt ); acl n p();? / 定义要连接得服务端地址二? a rse er 、si _a r 、 sun、s a r = inet addr(ip ) ; /目标 ip? add
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 危险废物转运交接安全管控方案
- 图文店用电安全操作规程
- 岸桥司机安全操作规程
- 2026年煤田地质试题及答案解析
- 结缔组织病相关间质性肺病居家呼吸训练共识
- 2026学年湖南省醴陵市一年级数学期末自测模拟黑金考题详细参考解析详细答案和解析
- Oracle开发面试题及详细答案(实战版)
- 2026年心血管病学综合知识竞赛试题及答案解析
- 电炉炼钢工安全操作规程
- 医用气体终端安装调试方案
- 摩托置换合同协议书模板
- 浦东新区2024-2025学年六年级上学期期中考试数学试卷及答案(上海新教材)
- 2002年江苏省苏州市中考数学真题【含答案、解析】
- 2025-2030中国密胺餐具行业发展分析及发展前景与投资研究报告
- 寒地城市公共交通的绿色出行模式
- 《血管活性药物静脉输注护理》团体标准解读
- 杜绝“死亡游戏”(梦回大唐)学生安全主题班会课件
- 中考英语1600核心词汇
- 《证券投资学实训教程》全套教学课件
- 三月的桃花心中开混声合唱谱
- 银行开门红营销思路
评论
0/150
提交评论