Visual C++网络编程技术-02.ppt_第1页
Visual C++网络编程技术-02.ppt_第2页
Visual C++网络编程技术-02.ppt_第3页
Visual C++网络编程技术-02.ppt_第4页
Visual C++网络编程技术-02.ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

扫描可控计算机 授课教师 网络编程 导入 电子教室软件主要功能是教师可以通过教师机程序控制和管理学生机教师机端控制程序能够主动扫描学生机 确定哪些学生已经进入电子教室 是可控计算机本章通过简单的通信程序实现扫描局域网内可控计算机的功能 本章要点 扫描可控计算机功能实现分析 WinSock通信编程技术 MFC网络通信编程技术 扫描可控计算机功能需求分析 教师机主动联系学生机 如果不能与学生机建立联系 则说明学生机端没有运行该程序 该学生机不在可控范围 反之 如果教师机与学生机成功的取得了联系 则证明学生机已启动程序 处于可控状态 教师机扫描学生机时 应该可以设置扫描范围 例如一个IP地址范围 教师机与范围内的所有学生机逐一联系 判断其是否处于可控状态 将处于可控状态的学生机显示在教师机端的程序界面上 设计程序界面 关键技术分析 关键技术就是两台联网的计算机之间进行通信采用什么技术实现网络通信 套接字 Socket WinSock进行面向连接通信编程 WinSock实现基于TCP的客户端 服务器通信 程序演示程序源代码 见教材P18 程序代码详解 头文件和库文件 include pragmacomment lib ws2 32 lib 使用WinSock进行编程开发 需要头文件和库文件 ws2 32 lib 的支持 程序代码详解 WSADATA WSADATAwsaData if ret WSAStartup MAKEWORD 2 2 程序代码详解 socket 调用Socket 函数可以建立套接字函数原型 SOCKETsocket intaf inttype intprotocol 参数af 套接字要使用的协议地址族 目前只提供AF INET表示使用互联网协议 IP 地址 参数type 描述套接字的类型 只能是SOCK STREAM SOCK DGRAM SOCK RAW中的一个 参数protocol 该套接字使用的特定通信协定 如果使用者不指定则设为0 程序代码详解 bind 调用bind 函数为服务器端定义的监听套接字指定一个地址及监听端口 Port intbind SOCKETs constStructsockaddrFAR name intnamelen 参数s 未绑定的套接字的对象名 参数name 套接字的地址值 是个结构体 参数namelen 地址参数name的长度 程序代码详解 listen listen函数在TCP服务器端使用 通知协议内核用户进程准备接受接口上的连接请求intlisten SOCKETs intbacklog 参数s 已绑定但尚未连接的套接字句柄 也是由socket 函数创建的套接字句柄 参数backlog 待处理的连接队列的最大长度 当连接的客户数大于这个最大长度并且服 程序代码详解 accept accept函数在服务器端等待并接受客户的连接 该函数返回一个新的套接字 该套接字可以用来与对方进行通信 而原先的套接字还是处于监听状态 intaccept SOCKETs structsockaddrFAR addr intFAR addrlen 参数s 表示处于监听模式的套接字句柄 参数addr 是SOCKADDR对象的地址 参数addrlen 表示addr参数的长度 程序代码详解 send send函数发送数据intsend SOCKETs constcharFAR buf intlen intflags 参数s 表示已连接的本地套接字描述符 参数buf 表示要发送的缓冲区数据 参数len 表示缓冲区的长度 参数flags 表示标志类型 可以为0 MSG DONTROUTE MSG OOB 程序代码详解 recv recv函数从TCP连接的另一端接收数据intrecv SOCKETs charFAR buf intlen intflags 参数s 接收端套接字描述符 参数buf 指明一个缓冲区 用来存放接收到的数据 参数len buf的长度 参数flags 表示标志 可以是0 MSG PEEK MSG OOB 一般置0 程序代码详解 connect Connect函数完成通信的连接过程intconnect SOCKETs conststructsockaddrFAR name intnamelen 参数s 表示是将要和服务器建立连接的套接字句柄 参数name 服务器的地址结构参数namelen 地址名字name的长度 MFC的CSocket类 微软的MFC把复杂的WinSockAPI函数封装到类里 这使得编写网络应用程序更容易 MFC中的CAsyncSocket类逐个封装了WinSockAPICSocket类是由CAsyncSocket继承而来 继承了它封装的WinSockAPI CSocket类实现网络通信编程过程 构造一个CSocket对象 使用这个对象的Create 成员函数产生一个socket对象 在客户方程序中 除非需要数据报套接字 Create 函数一般情况下应该使用默认参数 而对于服务方程序 必须在调用Create时指定一个端口 如果是客户方套接字 则调用Connect 函数与服务方套接字连接 如果是服务方套接字 则调用Listen 开始监听来自客户方的连接请求 收到连接请求后 调用Accept 函数接受请求 建立连接 连接成功建立后 可以使用Receive 和Send 函数进行数据发送和接收工作 通信结束后 使用Close 函数销毁CSocket对象 CSocket类实现的面向连接的套接字通信过程 代码详解 头文件 include 头文件afxsock h中包含CAsyncSocket和CSocket类定义 代码详解 Create函数 BOOLCreate UINTnSocketPort 0 intnSocketType SOCK STREAM longlEvent FD READ FD WRITE FD OOB FD ACCEPT FD CONNECT FD CLOSE LPCTSTRlpszSocketAddress NULL 参数nSocketPort 与套接字一起使用的端口号 默认值为0 表示自动选择端口号 参数nSocketType 指定要创建的套接字类型 默认为流式套接字 参数lEvent 指定感兴趣的网络事件的掩码位 参数lpszSocketAddress 指定套接字的网络地址 代码详解 Listen函数 BOOLListen intnConnectionBacklog 5 参数nConnectionBacklog 指定连接请求队列的最大连接数目 默认为5 代码详解 Accept函数 virtualBOOLAccept CAsyncSocket参数rConnectedSocket 用来进行连接的新套接字的引用 参数lpSlpSockAddr 用来返回发送连接请求的套接字地址的SOCKADDR结构指针 参数lpSockAddrLen 指向pSockAddr结构中地址的字节长度的指针 代码详解 Connect函数 BOOLConnect LPCTSTRlpszHostAddress UINTnHostPort 参数lpszHostAddress 用于要连接的服务器网络地址 参数nHostPort 指定套接字应用程序使用的端口号 代码详解 Receive函数 virtualintReceive void lpBuf intnBufLen intnFlags 0 参数lpBuf 接收数据的缓冲区 参数nBufLen 缓冲区的字节节长度 参数nFlags 用来表示函数的实现 默认为0 代码详解 Send函数 virtualintSend constvoid lpBuf intnBufLen intnFlags 0 参数lpBuf 要发送的数据的缓冲区地址 参数nBufLen lpBuf缓冲区的字节长度 参数nFlags 指定函数的调用标志 默认值为0 代码详解 Close函数 该函数用来关闭套接字并释放Socket描述符 其函数原型为 VirtualvoidClose 扩展核心程序 首先建立两个应用程序 一个teacher和一个student student程序应首先启动 teacher程序能够主动向所有student程序发出连接请求能够成

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论