




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Socket网络编程 讨论内容及意义 内容 设计局域网内能够全双工通信的应用程序 意义 1 彻底理解TCP IP协议 2 领会使用操作系统API编程的方法 3 形成理解其他任何通信协议的触类旁通的能力 网卡实现 工作原理 理解TCP IP协议族的主机侧实现 可供调用的函数 接口 操作系统实现 操作系统实现 用户程序 工作原理 TCP连接建立及通信的程序流程 多线程 为了能够同时收发数据 在这里我们用到多线程编程实现 线程是程序中一个单一的顺序控制流程 在单个程序中同时运行多个线程完成不同的工作 称为多线程 使用多线程具有同步完成多项任务 加快运行速度 释放一些资源等功能 编程时注意的问题 1 全局变量的设定 使用多线程时由于socket是两个线程共用 所以定义全局变量比较方便 2 注意服务器和客户端程序实现上的不同 服务器要监听客户端的请求 使用listen 函数时记得先用bind 函数进行绑定 3 收发函数 接受数据时要给与判断 否则会一直不停地发送 发送数据时要注意扫描的格式 实验代码说明 客户端 include include pragmacomment lib ws2 32 lib 告知编译器link时包含本库 全局变量定义 多线程共享的变量SOCKETsockClient 数据发送线程的入口函数DWORDWINAPIThreadProc1 LPVOIDlpParam while 1 charsendBuf 1024 memset sendBuf 0 1024 初始化缓冲区 扫描键盘 此处可用gets sendBuf 实现 scanf n 发送数据 voidmain WSADATAwsaData SOCKADDR INaddrSrv 初始化if 0 WSAStartup MAKEWORD 1 1 建立socketsockClient socket AF INET SOCK STREAM 0 addrSrv sin addr S un S addr inet addr 192 168 11 173 服务器IPaddrSrv sin family AF INET 设置地址类型addrSrv sin port htons 6500 绑定端口号 建立连接if 0 connect sockClient SOCKADDR 主线程进入循环 接收数据while 1 charrecvBuf 1024 charrecv byte num 0memset recvBuf 0 1024 recv byte num recv sockClient recvBuf 1024 0 if 0 recv byte num 判断是否有接收到数据 printf s n recvBuf closesocket sockClient 主程序结束前 关闭Socket 代码说明 服务器 include include pragmacomment lib ws2 32 lib 告知编译器link时包含本库 全局变量 因为两个线程都用到 所以放到全局定义SOCKETsockConn 服务器侧数据发送线程入口函数DWORDWINAPIThreadProc1 LPVOIDlpParam while 1 charsendBuf 1024 memset sendBuf 0 1024 初始化缓冲区scanf n 释放资源 服务器主函数voidmain WSADATAwsaData SOCKETsockSrv SOCKADDR INaddrSrv SOCKADDR INaddrClient intIpAddr len sizeof SOCKADDR charsendBuf 1024 初始化 若返回值不为0 说明初始化失败if 0 WSAStartup MAKEWORD 1 1 服务器主函数续if LOBYTE wsaData wVersion 1 HIBYTE wsaData wVersion 1 WSACleanup return 建立服务器socketsockSrv socket AF INET SOCK STREAM 0 addrSrv sin addr S un S addr htonl INADDR ANY 设置IPaddrSrv sin family AF INET 设置地址类型addrSrv sin port htons 6500 绑定端口号 服务器主函数续 绑定socketbind sockSrv SOCKADDR 显示对方IP地址 发送试探信息 hello printf inet ntoa addrClient sin addr send sockConn hello n strlen hello n 1 0 创建键盘扫描及数据发送线程CreateThread NULL 0 ThreadProc1 NULL 0 NULL 主线程进入循环接收数据while 1 charrecvBuf 1024 charrecv byte num 0 recv byte num recv sockConn recvBuf 1024 0 if 0 recv byte num printf s n recvBuf closesocket sockConn 主线程结束 关闭socket 下一步工作计划 工作场景畅想 实现一个更强大的服务器 该服务器可与40个客户端同时建立TCP连接 任一客户端可通过服务器发送信息到任一目标客户端 客户端之间通信无需指定对方I
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东省淄博市张店区2022-2023学年九年级上学期期中化学试题(含答案)
- 高级会计网课课件
- 电焊知识干货培训总结课件
- 北京期末数学考试真题及答案
- 电焊工知识普及培训内容课件
- 北京安全b本考试真题及答案
- 爆破保管员复训考试题及答案
- 六年级考试题及答案
- 镗床考试题及答案
- 保安考试考哪几种题目及答案
- YY/T 1095-2015肌电生物反馈仪
- GB/T 328.13-2007建筑防水卷材试验方法第13部分:高分子防水卷材尺寸稳定性
- GB/T 2480-2022普通磨料碳化硅
- 茶叶实践报告3篇
- 细胞生物学实验课件:细胞组分的分级分离
- 胸腔穿刺术thoracentesis课件
- 合理选择影像检查方法课件
- 欣旺集团种禽养殖管理制度手册
- Q∕SY 05129-2017 输油气站消防设施及灭火器材配置管理规范
- 企业微信私域流量运营方案
- 中职学校《机械基础》第二学期全套电子教案(含教学进度计划)(配套教材:高教版中职统编)云天课件
评论
0/150
提交评论