您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 第6章_通用连接框架
第6章通用连接框架主讲教师:贾震斌本章教学目标•掌握通用连接框架GFC(GenericConnectionFramwork)的概念、功能;•掌握Connector类及其open()的功能;•掌握Connection接口的功能,了解其主要子接口类型。•理解多线程程序设计思想在网络编程中的作用。本章学习建议•本章是为后继章节介绍具体网络连接方式作铺垫,主要是介绍通用网络连接的方式,学生主要应掌握建立网络连接方式的思路,在本章中不必急于掌握具体网络连接方法。6.1通用连接框架概述•什么是通用连接框架?CLDC设备的网络连接方式和IO接口标准繁多,无法象PC机那样定义通用的标准类库,因此CLDL设备只定义了通用连接框架,实际上就是只规定网络等IO连接的方式,没有规定具体的标准类库,也就意味着没有规定嵌入式设备必须实现哪些标准的IO连接方式,只是规定了最基本的IO连接方式,如必须支持HTTP协议,而象Socket则不是必须具有的。所以所谓的框架也可以认为是一个“大概”的规定。网络编程的几个注意点•为了避免堵塞,联网操作应考虑多线程设计;•采用HTTP协议传输数据时GET和POST两种传送数据方式都可以采用,但考虑到POST方式在编程时更加灵活,推荐使用POST方式。网络连接的一般过程•建立连接,设置传输方式,推荐使用POST数据传输方式;•打开输入/输出流,等待传输数据和接收数据;•判断相应的状态码,进入不同流程控制,如果状态码验证成功,开始数据接收,否则进行错误处理;•完成数据会输后,关闭连接和流。6.2通用连接框架的各种连接•GCF(通用连接框架)建立网络连接的方式是调用Connector类的静态方法open()创建各种类型网络的连接对象Connection:StaticConnectionConnector.open(Stringname);功能:创建或打开一个网络连接对象Connectionname:这个参数的字符串格式是:protocol:address:parameters-protocol部分是网络协议,address部分是URL地址,parameters是根据协议需要的其他参数,如端口号例:Connector.open(“”)该方法执行成功后返回的是一种连接对象。URL•统一资源定位符(URL,英语UniformResourceLocator的缩写)也被称为网页地址,是因特网上标准的资源的地址。它最初是由蒂姆·伯纳斯-李发明用来作为万维网的地址的。现在它已经被万维网联盟编制为因特网标准RFC1738了。•URL的一般格式为(带方括号[]的为可选项):protocol://hostname[:port]/path/[;parameters][?query]#fragment•例如:•=tom&age=20#resumeConnection接口•publicinterfaceConnection•这是一个最基本的通用接口类型,只定义了close方法,没有定义open方法,因为打开接口使用Connector.open()方法•这个接口的子接口包括:•CommConnection,ContentConnection,DatagramConnection,HttpConnection,HttpsConnection,InputConnection,OutputConnection,SecureConnection,ServerSocketConnection,SocketConnection,StreamConnection,StreamConnectionNotifier,UDPDatagramConnection•除上述子接口外还有其他许多建立各种网络协议连接的接口Connector.open()方法•Connector类的Connector.open()方法用于在GCF中打开各种不同类型的连接;•格式如下:•Connector.open(“protocol:address:parameters”);•例如:•Connector.open(“socket://地址:端口”)•Connector.open(“http://……”)•Connector.open(“datagram://地址:端口”)•Connector.open(“file://……”)Connector创建连接方法•publicstaticConnectionopen(Stringname)•publicstaticConnectionopen(Stringname,intmode)•publicstaticConnectionopen(Stringname,intmode,booleantimeouts)•publicstaticDataInputStreamopenDataInputStream(Stringname)•publicstaticDataOutputStreamopenDataOutputStream(Stringname)•publicstaticInputStreamopenInputStream(Stringname)•publicstaticOutputStreamopenOutputStream(Stringname)打开连接读取数据示例Stringurl=“”;ContentConnectionConnection=(ContentConnection)Connector.open(url)InputStreamistm=Connection.openInputStream();intlen=(int)Connection.getLength();if(len!=-1){byte[]data=newbyte[len];istm.read(data);}网络连接的多线程设计•网络连接是有可能堵塞的操作,为了高效运行程序,有必要引入多线程设计。•J2ME仍然采用继承Thread类实现线程类,或实现Runnable接口来实现线程操作,调用Thread中的start()方法启动线程。多线程设计代码示例•继承Thread类:classProcess1extendsThread{publicvoidrun(){}}•启动Process1线程:Process1pro=newProcess1();pro.start();多线程设计代码示例•实现Runnable接口:classProcess2implementsRunnable{publicvoidrun(){}}•启动Process2线程:Process2pro=newProcess2();Threadth=newThread(pro);Th.start();多线程同步管理•多个线程同时运行时,有可能因为资源冲突而造成死锁,所以需要进行线程同步管理,防止死锁现象。•当启动线程后,用wait()方法让线程进入等待状态,连接时用notify()方法唤醒线程。多线程同步管理代码示例publicsynchronizedvoidrun(){while(条件){try{wait();}catch(Exceptionex){ex.printStatcktrace();}}}多线程同步管理代码示例publicsynchronizedvoiddel(){notify();}本章小结习题•1.什么是通用连接框架?•2.简述网络连接的一般过程。•3.什么是URL?•4.举例说明如何编程实现打开连接读取数据。•5.通用连接框架支持哪些常见的接口?•6.为什么在网络连接编程中要采用多线程技术?
本文标题:第6章_通用连接框架
链接地址:https://www.777doc.com/doc-3400674 .html