版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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(退出)键入非命令字符串,则提示初始界面功能操作界面Lookupsession会话服务器会话客户sendtonamesendtoall3.1.2NetBIOS提供的接口与服务网络基本输入/输出系统NetBIOS(NetworkBasicInput/OutputSystem)在支持三个传输协议(NetBEUI、TCP/IP和IPX/SPX)的基础上提供了标准接口;应用程序通过引用网络控制块NCB(NetworkControlBlock)作为参数调用函数:UCHARNetbios(PNCBpNCB);NetBIOS支持的服务:网络名字注册和验证、会话服务、无连接的数据报服务、协议和适配器的监视与管理、支持三种软件调用Netbios函数:同步、异步和回调NBF——NetBIOSFrames,NetBEUI(NetBIOSExtendedUserInterface)协议,IBM和Microsoft为小型局域网建立的不可路由协议,不适合广域网。针对TCP/IP也称NBT(NetBIOSoverTCP/IP)IPX(InternetworkPacketExchange)/SPXSequencesPacketExchange(顺序包交换)NovellNetWare操作系统使用的网络层协议,路由协议没有IP丰富,设置简单。但IPX协议在以太网上运行时必须指定封装形式。TDI(TransportDriverInterface)传输驱动接口函数Netbios(PNCBpNCB)#defineNetbiosInt5c((unsignedchar)0x5C)#defineNetbiosInt2AFunctionCode((unsignedchar)0x2A)voidNetbios(structNCB*NcbPtrNear){UnionREGSInRegs,OutRegs;structNCBfar*NcbPtrFar=(structNCB*far)NcbPtrNear;segread(&SegRegs);SegRegs.es=FP_SEG(NcbPtrFar);SegRegs.x.bx=FP_OFF(NcbPtrFar);Int86x(NetbiosInt5c,&InRegs,&OutRegs,&SegRegs);}网络名字注册和验证名字解析系统有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编号。接收进程要区分单播和组播,名字编号是关键,如果不区分,则用通用名字号(0xff),否则唯一名编号接收为单播,组名编号接收为组播。广播的接收和发送采用单独的命令,不过还是以应用进程注册名和LANA编号为基础。同步、异步和回调同步调用是一种阻塞的单向调用方式,调用方必须一直等待Netbios函数完成功能返回;异步调用是一种非阻塞的单向调用方式,Netbios函数调用后立即返回,调用双方可以各自继续完成自己工作,NetBIOS接口提供事件触发以便通知调用方被调用方已经Netbios函数完成工作;回调是一种非阻塞的双向调用方法,调用方设置Netbios函数完成工作后的程序地址,以便被调用方完成工作后执行预先设置的那个程序。回调函数示例typedefint(__stdcall*PFunc)(int,int);
int
__stdcall
Max(inta,intb)
{return
a>b?a:b;
}
int__stdcallTest(PFuncfunc,inta,
intb)
{
return
func(a,
b);
}
void
main()
{
cout<<Test(Max,1,30)<<endl;
}
3.1.3网络控制块NCB的应用用#include<nb30.h>和#pragmacomment(lib,“netapi32.lib”)(或通过项目菜单)加入头文件和库文件所有NetBIOS网络功能实现的关键就是Netbios函数的调用,而不同功能实现的关键是该函数引用参数NCB结构各个域的取值不同同样的函数Netbios,同样的参数NCB结构指针,要实现不同的功能,就必须对NCB结构成员初始化。通过对NCB结构成员ncb_command赋值来完成等待(同步)和非等待(回调和异步)两种调用方式中选择参数NCB结构Typedefstruct_NCB{UCHARncb_command;UCHARncb_retcode;UCHARncb_lsn;UCHARncb_num;PUCHARncb_buffer;WORDncb_length;UCHARncb_callname[NCBNAMSZ];UCHARncb_name[NCBNAMSZ];UCHARncb_rto;UCHARncb_sto;void(CALLBACK*ncb_post)(struct_NCB*);UCHARncb_lana_num;UCHARncb_cmd_cplt;UCHARncb_reserve[10];HANDLEncb_event;}NCB,*PNCBNCB结构成员初始化举例UCHARRestNCB(UCHARjiangxue_lana){ NCBjiangxue_ncb; memset(&jiangxue_ncb,0,sizeof(NCB)); jiangxue_ncb.ncb_command=NCBRESET; jiangxue_ncb.ncb_callname[0]=MAXSESSIONS; jiangxue_ncb.ncb_callname[2]=MAXNAMES; jiangxue_ncb.ncb_lana_num=jiangxue_lana; Netbios(&jiangxue_ncb); NBCheck(jiangxue_ncb) return(jiangxue_ncb.ncb_cmd_cplt);}非等待调用选择非等待调用赋值时增加|ASYNCH(表示将该字节的最高位置1),而等待调用不需要;例如,pncb->ncb_command=NCBDGSEND|ASYNCH表示数据报发送命令采用非等待调用方式;异步方式通过NCB结构成员ncb_event指定事件的句柄,让Netbios函数完成命令后触发一个事件;回调方式是将处理程序的地址(回调函数)通过NCB结构成员ncb_post,让Netbios函数命令完成后唤醒该程序;一般回调函数定义如下:voidCALLBACK回调函数名(PNCB);其中回调函数的参数指向的NCB就是命令执行完成后的NCB结构。3.2.1数据报通信应用模型定向型数据报通信模型广播式数据报通信模型3.2.2实例中的广播式数据报通信算法与实现不论是广播式数据报通信还是定向型数据报,都要获取可用适配器网络编号并完成通信的初始化。接下来是唯一名LocalName和组名GroupName的注册,注册成功后返回相应唯一名字号NameNum和组名字号GroupNameNum。创建线程DGRecvBCTread用于实现广播数据报接收过程。定义了PdataGram结构指针,其结构的成员flag定义了Online,Offline,Listen和Message四种消息类型。键入命令sendtoall后调用DGsendBCCMD(Elana[0],NameNum)函数发送广播消息。提示进程用户“pleaseinputmessagetobroadcast:”,键入发送的消息,设置消息标志flag为Message,然后调用函数DatagramSendBC(lana,NameNum,(char*)pdata,len)发送键入的消息内容,其中lana为LANA编号,NameNum为本地名字号。在退出命令exit的处理中,终止接收线程DGRecvBCTread。然后发送广播消息,告诉其他在线应用进程,本应用进程下线,并关闭线程对象,然后调用函数DeleteName(注册的名字,Elana[0])删除注册的组名和唯一名。3.2.3实例中的定向型数据报通信的算法与实现初始化与名字注册同上一小节创建接收线程GDGRecvTread和SDGRecvTread接收组播和单播消息第二个参数不同,前者为注册的组名绑定的名字号GroupNameNum,后者为注册名绑定的名字号。前者收到信息后,屏幕提示“Multicastingsender‘sname:组播发送进程注册名”和“thecontentofmessage:收到的消息内容”。在用户操作命令提示($)下,键入命令“sendtoname”回车后,程序提示应用进程的用户键入接收应用进程注册的唯一名或组名屏幕提示“pleaseinputmessagetosendtothename接收进程注册的唯一名或组名:”发送进程的用户键入要发送的消息回车后,该函数调用SDGSend函数发送该消息内容。SDGSend函数在cnetbios.h中有定义,并且有5个参数:可用的LANA编号lana,接收进程注册的唯一名或组名DestName,发送进程注册名绑定的名字号NameNum,要发送消息缓冲区的指针(char*)pdata和发送缓冲区的长度len。3.3.1会话通信应用模型会话通信模型3.3.2实例中会话服务器的算法与实现初始化与名字注册同上一节;键入session操作命令后,提示用户信息“Enterthecharacter*(tolistenasaserver)ortheserver‘sname(toconnectasaclient):”,如果键入“*”字符,则该应用进程作为服务器该进程设置消息标志pdata->flag为Listen,并用函数DatagramSendBC(Elana[0],NameNum,(char*)pdata,len)发送广播消息,通知其他在线进程,本进程作为服务器。在while循环体中,首先服务器进程调用NetbiosListen(Elana[0],pncb,LocalName)函数被动监听任何客户进程的连接请求。接收一个客户进程的连接请求后,调用函数ServerSession(pncb)处理连接请求,将连接客户进程的注册名送入DestName中,然后创建会话数据接收线程SessionReceiveThread,同时指定该线程的调用参数(PVOID)pncb。屏幕显示“本地服务器进程注册名hasacceptedtheconnectionto远端客户进程注册名!”,然后休息片刻,发送数据“WelcometoServer!”给客户进程,屏幕提示用户“Whenyousendamessagetotheotherparty,themessage"exit"meansstoppingtosend!”,告诉用户当键入消息“exit”时,停止发送。然后进入发送循环。在for(;;)循环体中,提示服务器进程用户“pleaseinputmessagetosendto客户进程注册名:”键入的消息。如果用户键入“exit”,则服务器进程终止会话数据接收线程SessionReceiveThread,关闭线程句柄对象,断开连接,然后退出循环;如果不是,则调用函数SessionSend(Elana[0],SessionNum,sbuffer,sizeof(sbuffer))发送数据,发送结束后,并判断返回retcode,如果不是成功结束,表示对方已经关闭连接,退出循环。当连接请求处理完毕后,服务器进程提示用户“Ifyouneedlistentothenext,pleasetypetheletter"y":”,如果用户键入“y”则服务器进程进入下一轮循环,否则退出循环,回到用户操作命令提示状态$等待用户键入下一条命令。3.3.3实例中会话客户算法与实现初始化与名字注册同上一节;消息“Theserver服务器进程注册名iswaitingforaclienttoconnect!”显示告诉用户有服务器进程等待连接。操作命令提示符$下键入操作命令session回车后,用户进程提示信息“Enterthecharacter*(tolistenasaserver)ortheserver‘sname(toconnectasaclient):”,用户键入服务器注册名如果连接请求成功,则转入客户连接处理函数ClientSession(pncb),否则屏幕提示用户“Theserver服务器注册名isn'tlistening!”表示连接服务器进程失败。像服务器处理连接函数ServerSession一样创建会话数据接收线程SessionReceiveThread,同时指定该线程的调用参数(PVOID)pncb。屏幕显示“本地客户进程注册名hasconnectedtotheserver远端服务器进程注册名!”然后屏幕提示用户“Whenyousendamessagetotheotherparty,themessage”exit“meansstoppingtosend!”,告诉用户当键入消息“exit”时,停止发送。然后进入发送循环。在for(;;)循环体中,收到服务器进程发来的消息“WelcometoServer!”,并在屏幕上显示,并提示客户进程用户“pleaseinputmessagetosendto服务器进程注册名:”用户进入消息存放在缓冲区cbuffer内。如果用户键入“exit”,则客户进程终止会话数据接收线程SessionReceiveThread,关闭线程句柄对象,断开连接,然后退出循环;如果不是键入“exit”,则调用函数SessionSend(Elana[0],SessionNum,sbuffer,sizeof(sbuffer))发送缓冲区sbuffer的数据,发送结束后,并判断返回retcode,如果不是成功结束,则表示对方已经关闭连接,则退出循环。发送成功结束后,提示客户进程用户“pleaseinputmessagetosendto服务器进程注册名:”进入下一轮循环,以便用户键入消息。第一节活塞式空压机的工作原理第二节活塞式空压机的结构和自动控制第三节活塞式空压机的管理复习思考题单击此处输入你的副标题,文字是您思想的提炼,为了最终演示发布的良好效果,请尽量言简意赅的阐述观点。第六章活塞式空气压缩机
piston-aircompressor压缩空气在船舶上的应用:
1.主机的启动、换向;
2.辅机的启动;
3.为气动装置提供气源;
4.为气动工具提供气源;
5.吹洗零部件和滤器。
排气量:单位时间内所排送的相当第一级吸气状态的空气体积。单位:m3/s、m3/min、m3/h第六章活塞式空气压缩机
piston-aircompressor空压机分类:按排气压力分:低压0.2~1.0MPa;中压1~10MPa;高压10~100MPa。按排气量分:微型<1m3/min;小型1~10m3/min;中型10~100m3/min;大型>100m3/min。第六章活塞式空气压缩机
piston-aircompressor第一节活塞式空压机的工作原理容积式压缩机按结构分为两大类:往复式与旋转式两级活塞式压缩机单级活塞压缩机活塞式压缩机膜片式压缩机旋转叶片式压缩机最长的使用寿命-
----低转速(1460RPM),动件少(轴承与滑片),润滑油在机件间形成保护膜,防止磨损及泄漏,使空压机能够安静有效运作;平时有按规定做例行保养的JAGUAR滑片式空压机,至今使用十万小时以上,依然完好如初,按十万小时相当于每日以十小时运作计算,可长达33年之久。因此,将滑片式空压机比喻为一部终身机器实不为过。滑(叶)片式空压机可以365天连续运转并保证60000小时以上安全运转的空气压缩机1.进气2.开始压缩3.压缩中4.排气1.转子及机壳间成为压缩空间,当转子开始转动时,空气由机体进气端进入。2.转子转动使被吸入的空气转至机壳与转子间气密范围,同时停止进气。3.转子不断转动,气密范围变小,空气被压缩。4.被压缩的空气压力升高达到额定的压力后由排气端排出进入油气分离器内。4.被压缩的空气压力升高达到额定的压力后由排气端排出进入油气分离器内。1.进气2.开始压缩3.压缩中4.排气1.凸凹转子及机壳间成为压缩空间,当转子开始转动时,空气由机体进气端进入。2.转子转动使被吸入的空气转至机壳与转子间气密范围,同时停止进气。3.转子不断转动,气密范围变小,空气被压缩。螺杆式气体压缩机是世界上最先进、紧凑型、坚实、运行平稳,噪音低,是值得信赖的气体压缩机。螺杆式压缩机气路系统:
A
进气过滤器
B
空气进气阀
C
压缩机主机
D
单向阀
E
空气/油分离器
F
最小压力阀
G
后冷却器
H
带自动疏水器的水分离器油路系统:
J
油箱
K
恒温旁通阀
L
油冷却器
M
油过滤器
N
回油阀
O
断油阀冷冻系统:
P
冷冻压缩机
Q
冷凝器
R
热交换器
S
旁通系统
T
空气出口过滤器螺杆式压缩机涡旋式压缩机
涡旋式压缩机是20世纪90年代末期开发并问世的高科技压缩机,由于结构简单、零件少、效率高、可靠性好,尤其是其低噪声、长寿命等诸方面大大优于其它型式的压缩机,已经得到压缩机行业的关注和公认。被誉为“环保型压缩机”。由于涡旋式压缩机的独特设计,使其成为当今世界最节能压缩机。涡旋式压缩机主要运动件涡卷付,只有磨合没有磨损,因而寿命更长,被誉为免维修压缩机。
由于涡旋式压缩机运行平稳、振动小、工作环境安静,又被誉为“超静压缩机”。
涡旋式压缩机零部件少,只有四个运动部件,压缩机工作腔由相运动涡卷付形成多个相互封闭的镰形工作腔,当动涡卷作平动运动时,使镰形工作腔由大变小而达到压缩和排出压缩空气的目的。活塞式空气压缩机的外形第一节活塞式空压机的工作原理一、理论工作循环(单级压缩)工作循环:4—1—2—34—1吸气过程
1—2压缩过程
2—3排气过程第一节活塞式空压机的工作原理一、理论工作循环(单级压缩)
压缩分类:绝热压缩:1—2耗功最大等温压缩:1—2''耗功最小多变压缩:1—2'耗功居中功=P×V(PV图上的面积)加强对气缸的冷却,省功、对气缸润滑有益。二、实际工作循环(单级压缩)1.不存在假设条件2.与理论循环不同的原因:1)余隙容积Vc的影响Vc不利的影响—残存的气体在活塞回行时,发生膨胀,使实际吸气行程(容积)减小。Vc有利的好处—
(1)形成气垫,利于活塞回行;(2)避免“液击”(空气结露);(3)避免活塞、连杆热膨胀,松动发生相撞。第一节活塞式空压机的工作原理表征Vc的参数—相对容积C、容积系数λv合适的C:低压0.07-0.12
中压0.09-0.14
高压0.11-0.16
λv=0.65—0.901)余隙容积Vc的影响C越大或压力比越高,则λv越小。保证Vc正常的措施:余隙高度见表6-1压铅法—保证要求的气缸垫厚度2.与理论循环不同的原因:二、实际工作循环(单级压缩)第一节活塞式空压机的工作原理2)进排气阀及流道阻力的影响吸气过程压力损失使排气量减少程度,用压力系数λp表示:保证措施:合适的气阀升程及弹簧弹力、管路圆滑畅通、滤器干净。λp
(0.90-0.98)2.与理论循环不同的原因:二、实际工作循环(单级压缩)第一节活塞式空压机的工作原理3)吸气预热的影响由于压缩过程中机件吸热,所以在吸气过程中,机件放热使吸入的气体温度升高,使吸气的比容减小,造成吸气量下降。预热损失用温度系数λt来衡量(0.90-0.95)。保证措施:加强对气缸、气缸盖的冷却,防止水垢和油污的形成。2.与理论循环不同的原因:二、实际工作循环(单级压缩)第一节活塞式空压机的工作原理4)漏泄的影响内漏:排气阀(回漏);外漏:吸气阀、活塞环、气缸垫。漏泄损失用气密系数λl来衡量(0.90-0.98)。保证措施:气阀的严密闭合,气缸与活塞、气缸与缸盖等部件的严密配合。5)气体流动惯性的影响当吸气管中的气流惯性方向与活塞吸气行程相反时,造成气缸压力较低,气体比容增大,吸气量下降。保证措施:合理的设计
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江师范大学《规范字与书法》2023-2024学年第一学期期末试卷
- 郑州体育职业学院《视频传播实务》2023-2024学年第一学期期末试卷
- 长春师范大学《社会治理》2023-2024学年第一学期期末试卷
- 榆林职业技术学院《户外拓展与定向运动》2023-2024学年第一学期期末试卷
- 食用菌栽培基质废弃物降解
- 硕士职场竞争力
- 秋分节气与粮食安全
- 农业创新路演
- 学校文化建设上墙标语
- 会计辞职报告范文
- 公司费用预算表格模板(详细版)
- 华为经营管理-华为市场营销体系(6版)
- 2023年中国育龄女性生殖健康研究报告
- 钢结构加工厂考察报告
- 发电机检修作业指导书
- 薪酬与福利管理实务-习题答案 第五版
- 废旧物资处置申请表
- GB/T 37234-2018文件鉴定通用规范
- GB/T 31888-2015中小学生校服
- 质量检查考核办法
- 云南省普通初中学生成长记录-基本素质发展初一-初三
评论
0/150
提交评论