- 1、本文档共31页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
扫描可控计算机 授课教师: 导入 电子教室软件主要功能是教师可以通过教师机程序控制和管理学生机 教师机端控制程序能够主动扫描学生机,确定哪些学生已经进入电子教室,是可控计算机 本章通过简单的通信程序实现扫描局域网内可控计算机的功能 本章要点 ? 扫描可控计算机功能实现分析 ? WinSock通信编程技术 ? MFC网络通信编程技术 扫描可控计算机功能需求分析 教师机主动联系学生机,如果不能与学生机建立联系,则说明学生机端没有运行该程序,该学生机不在可控范围;反之,如果教师机与学生机成功的取得了联系,则证明学生机已启动程序,处于可控状态。 教师机扫描学生机时,应该可以设置扫描范围,例如一个IP地址范围,教师机与范围内的所有学生机逐一联系,判断其是否处于可控状态,将处于可控状态的学生机显示在教师机端的程序界面上。 设计程序界面 关键技术分析 关键技术就是两台联网的计算机之间进行通信 采用什么技术实现网络通信? ——套接字(Socket) WinSock进行面向连接通信编程 WinSock实现基于TCP的客户端/服务器通信 程序演示 程序源代码(见教材P18) 程序代码详解——头文件和库文件 #include winsock2.h #pragma comment(lib,ws2_32.lib) ——使用WinSock进行编程开发,需要头文件winsock2.h和库文件ws2_32.lib的支持。 程序代码详解—— WSADATA WSADATA wsaData; if((ret=WSAStartup(MAKEWORD(2,2),wsaData))!=0) { printf(初始化WinSock出错); return 0; } WSACleanup(); 程序代码详解—— socket 调用Socket()函数可以建立套接字 函数原型:SOCKET socket( int af, int type, int protocol ) 参数af:套接字要使用的协议地址族,目前只提供AF_INET表示使用互联网协议(IP)地址。 参数type:描述套接字的类型,只能是SOCK_STREAM、SOCK_DGRAM、SOCK_RAW 中的一个。 参数protocol:该套接字使用的特定通信协定(如果使用者不指定则设为0)。 程序代码详解——bind 调用bind()函数为服务器端定义的监听套接字指定一个地址及监听端口(Port) int bind( SOCKET s, const Struct sockaddr FAR *name, int namelen ); 参数s:未绑定的套接字的对象名。 参数name:套接字的地址值,是个结构体。 参数namelen:地址参数name的长度。 程序代码详解——listen listen函数在TCP服务器端使用,通知协议内核用户进程准备接受接口上的连接请求 int listen(SOCKET s, int backlog); 参数s:已绑定但尚未连接的套接字句柄,也是由socket()函数创建的套接字句柄。 参数backlog:待处理的连接队列的最大长度。当连接的客户数大于这个最大长度并且服 程序代码详解——accept accept函数在服务器端等待并接受客户的连接,该函数返回一个新的套接字,该套接字可以用来与对方进行通信,而原先的套接字还是处于监听状态。 int accept(SOCKET s, struct sockaddr FAR* addr, int FAR* addrlen); 参数s:表示处于监听模式的套接字句柄。 参数addr:是SOCKADDR对象的地址。 参数addrlen:表示addr参数的长度。 程序代码详解——send send函数发送数据 int send( SOCKET s, const char FAR *buf, int len, int flags ); 参数s:表示已连接的本地套接字描述符。 参数buf:表示要发送的缓冲区数据。 参数len:表示缓冲区的长度。 参数flags:表示标志类型,可以为0,MSG_DONTROUTE,MSG_OOB。 程序代码详解——recv recv函数从TCP连接的另一端接收数据 int recv( SOCKET s, char FAR *buf, int len, int flags); 参数s:接收端套接字描述符。 参数buf:指明一个缓冲区,用来存放接收到的数据。 参数len: buf的长度。 参数flags:表示标志,可以是0, MSG_PEEK, MSG_OOB。 一般置0。 程序代码详解—— connect
您可能关注的文档
- Visual C#2005数据库开发案例教程 教学课件 作者 李志云 第6章.ppt
- Visual C#2005数据库开发案例教程 教学课件 作者 李志云 第7章.ppt
- Visual C#2005数据库开发案例教程 教学课件 作者 李志云 第8章.ppt
- Visual C#2005数据库开发案例教程 教学课件 作者 李志云 第9章.ppt
- Visual C#2005数据库开发案例教程 教学课件 作者 李志云 第10章.ppt
- Visual C#程序设计教程 教学课件 作者 刘先省 陈克坚 第1章 程序设计语言与程序设计方法.ppt
- Visual C#程序设计教程 教学课件 作者 刘先省 陈克坚 第3章 C Sharp语法基础.ppt
- Visual C#程序设计教程 教学课件 作者 刘先省 陈克坚 第4章 顺序结构程序设计.ppt
- Visual C#程序设计教程 教学课件 作者 刘先省 陈克坚 第5章 选择结构程序设计.ppt
- Visual C#程序设计教程 教学课件 作者 刘先省 陈克坚 第6章 循环结构程序设计.ppt
文档评论(0)