|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
比如模式、敏捷方法什么的,这些思想好,但是实施的人没有理解而且没有正确运用这些知识导致了开发周期的延长。比如说对象,通过getName()方法不能获取对象的名字。
通用联网框架在J2ME平台中饰演着非常主要的脚色,假如没有它,我们写的使用程序对外人来讲只能说“奥秘”,而使用了通用联网框架举行联网的程序就显得“奇妙”了。本文将对通用联网框架举行全体的剖析,详细的使用会在后续的文章具体报告。
GenericConnectionFramework(以下简称GCF)是在CLDC中界说的,因为挪动信息设备的资本受限特征,以是java.net和java.io包不合适在这里利用。实际天下中利用着林林总总的收集通讯协定,这使得计划好这个框架十分不简单,最少我是这么以为的。但是当我们剖析GCF的时分能够分明地发明它有以下几个特征:基于接口计划,便于扩大、供应创立毗连的工场办法、利用尺度URL简化了程序员的事情。当我们观察CLDC1.1的api的时分我们能够发明个中界说了8个接口、一个Connector类和一个ConnectionNotFoundException非常。在MIDP2.0中举行了扩大,供应了HttpConnection、HttpsConnection接口,如许使得MIDlet具有了经由过程Http大概Https协定与server通讯的才能,供应了SocketConnection、ServerSocketConnection、UDPDatagramConnection接口,使得MIDlet可以在TCP/IP层经由过程socket举行通讯大概利用数据报举行通讯的才能。至于CommConnection和PUSH手艺在这里不报告。
分离GCF的接口条理图来懂得通用联网框架是最好的举措,上面我们看看它的条理布局。
最下层的接口是Connection,其他的接口都从他那边承继。在Connection中只界说了一个办法close()。在我们的实际天下中一般利用的是分组数据互换和电路互换,因而在联网框架中响应的界说了DatagramConnection和StreamConnection。因为在基于传播输中我们必要对输出流和输入流畅是具有操纵的才能,因而StreamConnection扩大了InputConnection和OutputConneciton,我们常常利用的Conn.openInputStream(),conn.openOutputStream()办法都是在这两个主要的接口中界说的。StreamConnectionNotifier接口界说了毗连监听器应当具有的才能,它的办法acceptAndOpen()办法前往一个StreamConnection范例的毗连,ServerSocketConnection承继了StreamConnectionNotifier接口,如许假如你做socketserver的时分就能够经由过程利用如许的URL,socket://:port在你的设备上创建监听端口守候毗连。SocketConnection承继了StreamConnection恰好能够和ServerSocketConnection交相照映。UDPDatagramConnection则是为了在分组数据互换中利用,他承继了DatagramConnection接口。ContentConnection接口中只界说了三个办法getEncoding(),getLength()和getType(),我们十分熟习的HttpConnection就是他的子类,在HttpConnection中界说了大批的操纵,Http联网功效也是MIDP标准中请求厂商必需撑持的毗连体例。如今你应当对条理对照分明了吧,持续往下看怎样利用GCF。
GCF的是利用十分复杂,次要会合在Connector的open()办法上。我们要做的就是供应一个尺度的URL参数传送给open办法,比方为了失掉一个HttpConnection我们应当写相似上面的代码:
Stringurl=“http://myip:myport/myservlet”;
HttpConnectionhttpConn=(HttpConnection)Connector.open(url);
我们应当分明这个URL的格局怎样界说的,有乐趣的话你能够参考RFC2396,我这里只列进他的基础格局:{scheme}:[{target}][{parms}],针对分歧的收集通讯体例,你要做的就是写出分歧的URL,并经由过程强迫转换失掉你必要的毗连范例。这篇文章不供应怎样举行数据传输的操纵,你能够参考MIDPAPI文档中HttpConnection接口中的具体申明,也能够参考开辟J2ME联网使用程序,在数据传输停止后不要健忘封闭毗连,这时候候你就应当利用Connection中界说的close()办法了。
try{
//Herecloseanyopenstreams
conn.close();
}catch(IOExceptionioe){
//Handletheexception.
//Throwtheexception,ignoreit,orreturnanerror.
}
至此,关于GCF的全体先容就停止了。我们应当分明GCF的接口条理干系、把握怎样利用GCF。同时不要健忘把这个框架的计划铭刻于心,现实上我以为CLDC和MIDP中良多计划都值得我们往多多的思索。
专门做了这个例子;而java的这个例子好像就是为了教学而写的,很多教学目的的例子是不考虑优化、性能的。 |
|