全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验三 套接字编程实验三 套接字编程 序号 姓名 学号 成绩 1 实验目的 两人一组 编写一个客户端 服务器程序 掌握 Socket 编程原理 2 实验环境 连入局域网络的主机一台 3 实验指导 Socket API 是实现进程间通信的一种编程设施 也是一种为进程间提供底层抽象的机 制 理解 socket 编程模型及其原理 4 实验分析 回答下列问题 客户端 IP 172 25 20 4 服务器 IP 172 25 20 194 客户端源代码 include stdafx h include include include include include include include include pragma comment lib ws2 32 lib define PORT 3490 客户机连接远程主机的端口 define MAXDATASIZE 100 每次可以接收的最大字节 int tmain int argc TCHAR argv WORD wVersionRequested WSADATA wsaData int err 0 rval 0 SOCKET fd struct sockaddr in servaddr struct hostent hp char buf 1024 wVersionRequested MAKEWORD 2 2 err WSAStartup wVersionRequested if err 0 return 1 if fd socket AF INET SOCK STREAM 0 h addr hp h length memset servaddr sin zero 0 sizeof servaddr sin zero 和服务器创建连接 rval connect fd sockaddr if rval 0 创建连接失败 printf Can not create connect exit 3 else memset buf 0 1024 printf Please input a line to server scanf s 向服务器发送信息 rval send fd buf strlen buf 1 0 if rval 0 printf Write error closesocket fd exit 5 服务器源代码 include stdafx h include include include include include include include include pragma comment lib ws2 32 lib define MYPORT 3490 定义用户连接端口 define BACKLOG 10 多少等待连接控制 define SERVER IP ADDR 172 25 20 194 服务器的IP地址 int tmain int argc TCHAR argv SOCKET sock msgsock int length 0 struct sockaddr in server struct sockaddr tcpaddr char buf 1024 int rval 0 len 0 err 0 WORD wVersionRequested WSADATA wsaData 指定socket版本 否则创建socket失败 即使创建socket返回值不为 1 但是bind 时会失败 wVersionRequested MAKEWORD 2 2 err WSAStartup wVersionRequested if err 0 return 1 建立套接字 sock socket AF INET SOCK STREAM 0 if sock 0 perror opening stream socket exit 1 使用任意端口命名套接字 server sin family AF INET 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 struct sockaddr if rval 0 perror binding stream socket exit 1 找出指定的端口号并打印出来 length sizeof server if getsockname sock struct sockaddr exit 1 printf socket port d n ntohs server sin port 开始接收连接 最大请求数为 listen sock 5 len sizeof struct sockaddr do msgsock accept sock struct sockaddr if msgsock 1 perror accept else memset buf 0 sizeof buf if rval recv msgsock buf sizeof buf 0 s n buf closesocket msgsock while TRUE 因为这个程序已经有了一个无限循环 所以套接字 sock 从来不显式关闭 然而 当 进程被杀死或正常终止时 所有套接字都将自动地被关闭 closesocket msgsock return 0 b 给出程序调试和运行的截图 客户端服务器 c 回答下列问题 1 为什么在服务器和客户端要包含winsock2 h文件 答 因为下文的答 因为下文的ws2 32 libws2 32 lib是是winsock2 hwinsock2 h头文件包含的内容 头文件包含的内容 2 为什么在服务器和客户端程序中要加入 pragma comment lib ws2 32 lib 语句 如果不加会出现什么问题 答 这个语句表示链接到答 这个语句表示链接到Ws2 32 libWs2 32 lib这个库 如果不加 就不能正确链接 也就不这个库 如果不加 就不能正确链接 也就不 能使用能使用Ws2 32 libWs2 32 lib这个库的内容了 这个库的内容了 3 为什么在服务器和客户端程序中要使用WSAStartup函数 如果不用程序会有什 么问题 答 答 WSAStarup 是 是Windows SocKNDs Asynchronous的启动命令 的启动命令 Windows下的下的 网络编程接口软件网络编程接口软件 Winsock1 或或 Winsock2 里面的一个命令 我们需要里面的一个命令 我们需要通通过过 WSAStartup函函数数完完成成对对 Winsock服服务务的的初初始始化化 若若不不用用此此函函数数 Winsock 服服务务无无法法初初始始化化 从从而而影影响响程程序序的的运运行行 4 如果先运行客户端程序 程序会有什么现象 为什么会有这一现象 答 如果先运行客户端程序如果先运行客户端程序 则会显示无法连接到服务器 则会显示无法连接到服务器 有这一现象有这一现象的原因是服的原因是服 务器没运行 客户段无法寻找到对应务器没运行 客户段无法寻找到对应 IPIP 的的服务器 服务器 5 如果服务器程序所在计算机没有连接网络 程序会发生什么错误 我们捕获到 什么错误信息 答 答 如果服务器程序所在计算机没有连接网络如果服务器程序所在计算机没有连接网络 则会显示不能建立连接 则会显示不能建立连接 CanCan notnot creatcreat connectconnect 因此我们做这个试验的时候一定保持电脑是连网状态 因此我们做这个试验的时候一定保持电脑是连网状态 6 上述服务器是串行处理多个客户端的请求 如何该成并发处理的服务器 答 用户进程调用答 用户进程调用accept 然后调用 然后调用fork 这样 已连接套接口就在父进程与子进 这样 已连接套接口就在父进程与子进 程间共享 一般来说 接下来便是子进程读 写已连接套接口并关闭侦听套接程间共享 一般来说 接下来便是子进程读 写已连接套接口并关闭侦听套接 口 而父进程则关闭已连接套接口 口 而父进程则关闭已连接套接口 5 实验小结 1 刚开始对于socket编程不是很了解 所以在运行程序及调试程序的过程中存在很多 的问题 比如看不懂程序中某段代码的意义 不清楚程序的轮廓 鉴于此 通过 老 师在课堂上对程序的讲解及课下上网的搜索 慢慢的大致清楚了程序设计的基本 思 路 2 本实验要求对原程序代码进行修改 以实现更多的功能 而我刚开始在理解程序方 面存在着问题 所以在修改程序时摸不着头绪 不知从何下手 后来通过不断的 实 践及请教同学 在清楚了程序代码的思路及含义后渐渐的理清了头绪 3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年内蒙古化工职业学院单招职业适应性考试必刷测试卷及答案解析(名师系列)
- 2026年浙江邮电职业技术学院单招职业技能考试必刷测试卷及答案解析(夺冠系列)
- 2026年云南省临沧地区单招职业适应性测试必刷测试卷附答案解析
- 2026年宣城职业技术学院单招职业适应性考试题库及答案解析(夺冠系列)
- 2026年扬州市职业大学单招职业适应性测试题库及答案解析(名师系列)
- 房屋撤出协议书模板
- 房屋框架保护协议书
- 房屋竣工验收协议书
- 房屋翻修承包协议书
- 房屋认可协议书范本
- 违章记录表格式
- 供热管网系统管网水力平衡调节方法及步骤
- JJG 144-2007标准测力仪
- GB/T 29477-2012移动实验室实验舱通用技术规范
- GA/T 800-2008人身损害护理依赖程度评定
- FZ/T 12001-2015转杯纺棉本色纱
- 国家药监局医疗器械技术审评检查大湾区分中心第二批员额制人员公开招聘(广东)【共500题附答案解析】模拟检测试卷
- 通达信函数大全整理
- 小升初英语衔接存在的问题及其对策优秀获奖科研论文
- 煤矿矿井废水处理设计方案
- 《数字电路逻辑设计》--逻辑函数及其化简练习习题
评论
0/150
提交评论