




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Windows网络编程技术第3NetBIOS的网络编程,授课老师:胡鸣,本章提纲,3.1基于NetBIOS网络编程的基础3.1.1网络应用实例和来源3.1.2NetBIOS提供的接口与服务3.1.3网络控制块NCB的应用3.2数据报通信编程3.2.1数据报通信应用模型3.2.2实例中的广播式数据报通信算法与实现3.2.3实例中的定向型数据报通信的算法与实现3.3会话通信编程3.3.1会话通信应用模型3.3.2实例中会话服务器的算法与实现3.3.3实例中会话客户算法与实现,3.1.1网络应用实例和来源,VC+实现的控制台程序,位于“第3章代码”中,其源程序代码由cnetbios.h和CnetbiosChat.cpp两部分组成两个界面:初始界面和功能操作界面程序使用命令提示符$,界面上可以提供用户操作的命令有五种:Lookup(了解本地命名和适配器信息)、session(会话建立与通信)、sendtoname(发送单播和组播数据包)、sendtoall(发送广播通信)、exit(退出)键入非命令字符串,则提示,初始界面,功能操作界面,Lookup,session,会话服务器,会话客户,sendtoname,sendtoall,3.1.2NetBIOS提供的接口与服务,网络基本输入/输出系统NetBIOS(NetworkBasicInput/OutputSystem)在支持三个传输协议(NetBEUI、TCP/IP和IPX/SPX)的基础上提供了标准接口;应用程序通过引用网络控制块NCB(NetworkControlBlock)作为参数调用函数:UCHARNetbios(PNCBpNCB);NetBIOS支持的服务:网络名字注册和验证、会话服务、无连接的数据报服务、协议和适配器的监视与管理、支持三种软件调用Netbios函数:同步、异步和回调,NBFNetBIOSFrames,NetBEUI(NetBIOSExtendedUserInterface)协议,IBM和Microsoft为小型局域网建立的不可路由协议,不适合广域网。针对TCP/IP也称NBT(NetBIOSoverTCP/IP)IPX(InternetworkPacketExchange)/SPXSequencesPacketExchange(顺序包交换)NovellNetWare操作系统使用的网络层协议,路由协议没有IP丰富,设置简单。但IPX协议在以太网上运行时必须指定封装形式。TDI(TransportDriverInterface)传输驱动接口,函数Netbios(PNCBpNCB),#defineNetbiosInt5c(unsignedchar)0 x5C)#defineNetbiosInt2AFunctionCode(unsignedchar)0 x2A)voidNetbios(structNCB*NcbPtrNear)UnionREGSInRegs,OutRegs;structNCBfar*NcbPtrFar=(structNCB*far)NcbPtrNear;segread(,网络名字注册和验证,名字解析系统有LMHOSTS文件和WINS(WindowsInternetNameService)服务器两个选项类型有唯一名,组名,永久节点名(网卡地址),符号名。为每个LANA编号维护一个命名表,名字(最多16个字节)与一个字节的命名编号(1-254)对应LANA编号描述网卡和传输协议(3个),例如两个网卡以及三种协议0(TCP/IP,网卡1)、1(NetBEUI,网卡1)、2(IPX/SPX,网卡1)、3(TCP/IP,网卡2)、4(NetBEUI,网卡2)、5(IPX/SPX,网卡2),会话服务,呼叫功能用于建立一条与被呼叫的应用进程之间的会话连接一旦连接建立,就某个LANA编号有了一条虚电路用NetBIOS本地会话号(1-254,0和255作为系统保留值)来识别。会话数据发送和接收都是基于所建立的虚电路,因此除了指定收发缓冲区的指针和缓冲区的长度外,还需要指定的本地会话号和LANA编号。通信结束释放已有连接,同时释放进程占用的内存单元,即本地会话号对应的表。,无连接的数据报服务,NetBIOS提供单播、组播和广播三种数据报传送功能NetBIOS单播和组播信息发送都是基于名字,因此单播与组播的区分取决于接收方的名字是唯一名还是组名,而发送进程则需要指定本地名字编号和LANA编号。接收进程要区分单播和组播,名字编号是关键,如果不区分,则用通用名字号(0 xff),否则唯一名编号接收为单播,组名编号接收为组播。广播的接收和发送采用单独的命令,不过还是以应用进程注册名和LANA编号为基础。,同步、异步和回调,同步调用是一种阻塞的单向调用方式,调用方必须一直等待Netbios函数完成功能返回;异步调用是一种非阻塞的单向调用方式,Netbios函数调用后立即返回,调用双方可以各自继续完成自己工作,NetBIOS接口提供事件触发以便通知调用方被调用方已经Netbios函数完成工作;回调是一种非阻塞的双向调用方法,调用方设置Netbios函数完成工作后的程序地址,以便被调用方完成工作后执行预先设置的那个程序。,回调函数示例,typedefint(_stdcall*PFunc)(int,int);int_stdcallMax(inta,intb)returnab?a:b;int_stdcallTest(PFuncfunc,inta,intb)returnfunc(a,b);voidmain()coutTest(Max,1,30)flag为Listen,并用函数DatagramSendBC(Elana0,NameNum,(char*)pdata,len)发送广播消息,通知其他在线进程,本进程作为服务器。在while循环体中,首先服务器进程调用NetbiosListen(Elana0,pncb,LocalName)函数被动监听任何客户进程的连接请求。,接收一个客户进程的连接请求后,调用函数ServerSession(pncb)处理连接请求,将连接客户进程的注册名送入DestName中,然后创建会话数据接收线程SessionReceiveThread,同时指定该线程的调用参数(PVOID)pncb。屏幕显示“本地服务器进程注册名hasacceptedtheconnectionto远端客户进程注册名!”,然后休息片刻,发送数据“WelcometoServer!”给客户进程,屏幕提示用户“Whenyousendamessagetotheotherparty,themessageexitmeansstoppingtosend!”,告诉用户当键入消息“exit”时,停止发送。然后进入发送循环。,在for(;)循环体中,提示服务器进程用户“pleaseinputmessagetosendto客户进程注册名:”键入的消息。如果用户键入“exit”,则服务器进程终止会话数据接收线程SessionReceiveThread,关闭线程句柄对象,断开连接,然后退出循环;如果不是,则调用函数SessionSend(Elana0,SessionNum,sbuffer,sizeof(sbuffer)发送数据,发送结束后,并判断返回retcode,如果不是成功结束,表示对方已经关闭连接,退出循环。当连接请求处理完毕后,服务器进程提示用户“Ifyouneedlistentothenext,pleasetypethelettery:”,如果用户键入“y”则服务器进程进入下一轮循环,否则退出循环,回到用户操作命令提示状态$等待用户键入下一条命令。,3.3.3实例中会话客户算法与实现,初始化与名字注册同上一节;消息“Theserver服务器进程注册名iswaitingforaclienttoconnect!”显示告诉用户有服务器进程等待连接。操作命令提示符$下键入操作命令session回车后,用户进程提示信息“Enterthecharacter*(tolistenasaserver)ortheserversname(toconnectasaclient):”,用户键入服务器注册名如果连接请求成功,则转入客户连接处理函数ClientSession(pncb),否则屏幕提示用户“Theserver服务器注册名isntlistening!”表示连接服务器进程失败。,像服务器处理连接函数ServerSession一样创建会话数据接收线程SessionReceiveThread,同时指定该线程的调用参数(PVOID)pncb。屏幕显示“本地客户进程注册名hasconnectedtotheserver远端服务器进程注册名!”然后屏幕提示用户“Whenyousendamessagetotheotherparty,themessage”exit“meansstoppingtosend!”,告诉用户当键入消息“exit”时,停止发送。然后进入发送循环。在for(;)循环体中,收到服务器进程发来的消息“WelcometoServer!”,并在屏幕上显示,并提示客户进程用户“pleaseinputmessagetosendto服务器进程注册名:”用户进入消息存放在缓冲区cbuffer内。,如果用户键入“exit”,则客户进程终止会话数据接收线程SessionReceiveThread,关闭线程句柄对象,断开连接,然后退出循
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖南软件职业技术大学《内部控制理论与实践》2023-2024学年第二学期期末试卷
- 四川财经职业学院《播音发声学》2023-2024学年第二学期期末试卷
- 内蒙古大学《机器学习与深度学习》2023-2024学年第二学期期末试卷
- 湖北警官学院《仓储管理与库存控制》2023-2024学年第二学期期末试卷
- 上海工艺美术职业学院《冶金质量分析》2023-2024学年第二学期期末试卷
- 西安海棠职业学院《矿山装备及自动化》2023-2024学年第二学期期末试卷
- 塔里木大学《控制工程基础》2023-2024学年第二学期期末试卷
- 2024年电子体重秤项目投资申请报告代可行性研究报告
- 2024年形状记忆合金项目资金筹措计划书代可行性研究报告
- 销售人员系统培训
- 00510秘书实务-自考整合版
- 护理研究中的偏倚及控制
- 小学生的龋齿预防ppt课件
- [复习]边坡客土吹附施工方案
- 冲压试题库及答案文档
- 管理人员责任追究制度
- 自动旋转门PLC控制
- 电影场记表(双机位)
- 毕设高密电法探测及数据处理解释
- 华为保密制度范文
- 冻库温度记录表
评论
0/150
提交评论