




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华 北 电 力 大 学 实 验 报 告华北电力大学实 验 报 告| 实验名称 套接字编程 课程名称 TCP/IP网络与协议| 专业班级:网络0801 学生姓名:严飞 学 号:200809030125 成 绩:指导教师:李丽芬老师 实验日期:2011.4 基于Winsock的服务器/客户端通信一.实验目的 1掌握客户机与服务器的通信原理。2掌握WinSocket编程技术。实现两机间的通信。二.实验要求利用Visual C+语言中的Winsock控件,采用TCP方式实现一个服务器与客户端间的通信程序。三.实验设计1如果创建客户端应用程序,就必须知道服务器计算机名或者 IP 地址,还要知道进行“侦听”的端口,然后调用 Connect 方法。 2如果创建服务器应用程序,就应设置一个收听端口并调用 Listen 方法。当客户端计算机需要连接时就会发生 ConnectionRequest 事件。为了完成连接,可调用 ConnectionRequest 事件内的 Accept 方法。 3客户机/服务器模型的工作流程4建立连接后,任何一方计算机都可以收发数据。为了发送数据,可调用 SendData 方法。实验流程图如下:5 基于TCP的应用编程实现过程TCP实现方式中,在服务器端设立了一个Winsock控件(侦听套接字)来监听客户端的连接,如果有连接请求到达时,服务器再创建一个新的Winsock控件(连接套接字)来与客户端进行通信,而原来的Winsock控件(侦听套接字)仍处于监听状态,等待新的客户连接请求。四.实验步骤1准备工作1)使用VC+6.0App Wizard创建一个Win32控制台应用程序。2)记住要设置选项,以便添加对MFC的支持3)打开文件stdafx.h,添加语句:#include4)在winsock2.h之后,还要包含conio.h和iostream,h2服务器端的程序 1)使用WSAStartup()初始化Winsock库。WSADATA WSAData;/WSADATA结构将有WSAStartup函数来填充if(WSAStartup(MAKEWORD(2,2),&wsaData) != 0) coutWinsock load failed endl; return; 2)使用socket()创建一个IPPROTO_TCP类型的侦听套接字。sListen = socket(AF_INET, SOCK_STREAM, 0); if (sListen = INVALID_SOCKET) coutsocket failed: WSAGetLastError()endl; return; 3)使用htons ()/htonl ()获取主机套接字和IP地址信息。 serveraddr.sin_port=htons(unsigned short)atoi(argv1); /sin_port成员指定了将要分配给套接字的端口号atoi(argv1serveraddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY); /sin_addr.S_un.S_addr给出了套接字的主机的IP地址 4)使用bind()为套接字关联本地地址。int nBind;nBind=bind(sock,(sockaddr*)&serveraddr,sizeof(serveraddr);/sock是调用socket()函数的返回值,(sockaddr*)&serveraddr是一个WinSock地址结构(指针形式),sizeof(serveraddr)是该地址结构的长度。if(nBind=SOCKET_ERROR)cout Socket Bind失败!endl;return; 5)使用listen()设置套接字进入监听状态,为到达的连接指定一个backlog。int nListen;nListen=listen(sock,SOMAXCONN);/为了能够探测到客户机的连接请求,建立侦听函数,sock是用来进行侦听的套接字。 if(nListen=SOCKET_ERROR) coutSocket Listen 失败!endl;return; 6)使用socket()创建一个IPPROTO_TCP类型的连接套接字。SOCKET tempsock;/创建连接套接字 sockaddr_in tempaddr;/请求连接的套接字地址 7)使用accept()接受请求的连接。tempsock=accept(sock,(sockaddr*)&tempaddr,&templen);/sock是调用listen()函数的侦听套接字,后两个返回所连接的客户机套接字的地址和长度。 if(tempsock=INVALID_SOCKET) cout Socket Accept 失败!=10)closesocket(tempsock);/关闭连接套接字continue; Param.sock=tempsock; Param.addr=tempaddr;DWORD dwThreadId; CreateThread(NULL,0,ServerThread,&Param,0,&dwThreadId); 9)利用连接套接字与客户端进行数据传输 10)使用closesocket()关闭套接字连接 closesocket(sock);/关闭侦听套接字 11)使用WSACleanup()释放Winsock库。 WSACleanup();3客户端程序 相对于服务器而言,客户端程序比较简单,只需建立一个连接,然后便可以传送数据,使用函数原理与服务器端类似 。 1)使用WSAStartup()初始化Winsock库。 2)使用socket()创建一个IPPROTO_TCP类型的套接字。 3)使用gethostbyname()/gethoustbyaddr()获取主机信息。 4)使用connet()连接到服务器。 5)使用send()/recv()发送和接收数据,直到TCP通信结束。 6)使用closesocket()关闭套接字连接。 7)使用WSACleanup()释放Winsock库。五实验结果1服务器端显示2客户端显示六. 实验总结实验中注意的问题:1在建立客户端与服务器端连接的时候要仔细,不能缺少任何一步,否则就无法建立连接了。2注意编程平台不同,引进数据包文件的差异。3通过与UDP通信的比较,掌握两者之间的异同。4注意在一台机器上实现通信时需要使用回环地址127.0.0.1.七.心得体会通过本次试验,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年福建省石狮市部分公办学校招聘编制内教师61人考前自测高频考点模拟试题及答案详解(全优)
- 2025年台州湾新区卫生事业单位公开招聘卫技人员2人模拟试卷附答案详解(黄金题型)
- 2025年泉州永春县部分公办学校专项招聘编制内新任教师(二)模拟试卷及参考答案详解1套
- 2025年甘肃省庆阳市镇原县第二批城镇公益性岗位83人考前自测高频考点模拟试题及参考答案详解一套
- 2025年甘肃省兰州市肺科医院招聘工作人员14人模拟试卷及答案详解(夺冠)
- 2025年宿州市人才集团有限公司招募就业见习人员7人考前自测高频考点模拟试题带答案详解
- 2025年度宜昌市中心人民医院公开招录29名专业技术人员(二)考前自测高频考点模拟试题及答案详解(历年真题)
- 地铁司机个人工作总结
- 建筑公司合同评审及管理制度模版5篇
- 2025年福建省莆田市大忠门投资咨询有限公司招聘2人模拟试卷及答案详解(名师系列)
- 父亲的病鲁迅
- 食品仓储业食品安全从业人员培训
- 教育强国建设的意义与路径探索
- 关于成立特种设备安全管理机构的通知(模板)
- 食品添加剂欧盟编码纯中文版
- 课程评价课件
- 劳动关系管理XXXXs课件
- 概率论与数理统计课后答案及概率论与数理统计(第五版)习题答案
- 建筑室外围蔽板材(简化)
- GB/T 250-2008纺织品色牢度试验评定变色用灰色样卡
- GB/T 19816.2-2005涂覆涂料前钢材表面处理喷射清理用金属磨料的试验方法第2部分:颗粒尺寸分布的测定
评论
0/150
提交评论