`
lukew
  • 浏览: 51602 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

j2me 联网技术分析总结

    博客分类:
  • J2ME
阅读更多
基本点:

Generic Connections

In the CLDC Generic Connection framework, all connections are created using the open static method from the Connector class. If successful, this method returns an object that implements one of the generic connection interfaces. Figure 1 shows how these interfaces form an is-a hierarchy. The Connection interface is the base interface such that StreamConnectionNotifier is a Connection and InputConnection is a Connection too.

fig1.gif
Figure 1: Connection interface hierarchy
  • The Connection interface is the most basic connection type. It can only be opened and closed.
  • The InputConnection interface represents a device from which data can be read. Its openInputStream method returns an input stream for the connection.
  • The OuputConnection interface represents a device to which data can be written. Its openOutputStream method returns an output stream for the connection.
  • The StreamConnection interface combines the input and output connections.
  • The ContentConnection is a subinterface of StreamConnection. It provides access to some of the basic meta data information provided by HTTP connections.
  • The StreamConnectionNotified waits for a connection to be established. It returns a StreamConnection on which a communication link has ben established.
  • The DatagramConnection represents a datagram endpoint.

The open method of the Connector class has the following syntax, where the String parameter has the format "protocol:address;parameters".

<!---->Connector.open(String);

Here are a few examples:

HTTP Connection

<!---->Connector.open("http://java.sun.com/developer");

Datagram Connection

<!---->Connector.open("datagram://address:port#");

Communicate with a Port

<!---->Connector.open("comm:0;baudrate=9600');

Open Files

<!---->Connector.open("file:/myFile.txt");


The HttpConnection Interface:

The HTTP protocol is a request-response application protocol in which the parameters of the request must be set before the request is sent. The connection could be in one of the three following states:
  • Setup: No connection yet
  • Connected: Connection has been made, the request has been sent, and some response is expected
  • Closed: Connection is closed

In the setup state the following methods can be invoked:

  • setRequestMethod
  • setRequestProperty

For example, suppose you have this connection:

<!---->HttpConnection c = (HttpConnection)
Connector.open(
"http://java.sun.com/developer");

Then, you can set the request method to be of type POST as follows:

<!---->c.setRequestMethod(HttpConnection.POST);

And likewise, you can set some of the HTTP properties. For example, you can set the User-Agent as follows:

<!---->c.setRequestProperty("User-Agent","Profile/MIDP-1.0 Configuration/CLDC-1.0");

If there is a method that requires data to be sent or received from the server, there is a state transition from Setup to Connected. Examples of methods that cause the transition include:

<!---->openInputStream
openOutputStream
openDataInputStream
openDataOutputStream
getLength
getType
getDate
getExpiration

And while the connection is open, some of these methods that may be invoked:

<!---->getURL
getProtocol
getHost
getPort


------------------------------------------------------------
要注意的问题:
开发中遇到个很头疼的问题, 与服务器通信write()数据时报java.io.IOException: Couldn't write to socket.
但是服务器抓不到任何包. 一开始怀疑是连建立连接出的问题, 实际上服务器抓不到包也有可能是流在没有close的时候就已经报错了.
如:
conn.open("url");
out = conn.openDataOutputStream();//此时将进行与服务器的三次握手;
                                  //但是如果在out.close()之前出现异常服务器是抓不到任何包的
out.write(byte[] bb);

关于这个的解释应该是流的缓冲机制.
所以正确的写法应该是捕捉到异常之后在catch块中把流close掉.
服务器端开发人员一般会说收不到包所以连接有问题,会把责任推给客户端,抓住这个证据在跟服务器端的同事扯皮时将处于有利的位置,嘎嘎.
还有就是要多做小实验, 注意代码要规范严格.

发现的几个问题:

1. java.io.IOException: Couldn't write to socket

2. java.io.IOException: Couldn't read from socket

CMNET联网方案:

CMWAP联网方案:

移动资费页的处理:

一个通用的HTTP连接封装:

分享到:
评论
2 楼 yekai584341028 2011-01-07  
楼主太搞笑了,还和服务器扯皮呵呵。
捕获异常要捕获根源异常。
1 楼 xmmarmy007 2009-01-16  
java.io.IOException: Couldn't read from socket
我在开发过程中读取服务器的数据遇到这个异常,一般是什么原因引起的呢?

相关推荐

    j2me源码——蓝牙联网实现五子棋

    本文将深入探讨一个基于J2ME的项目——蓝牙联网五子棋游戏,旨在帮助开发者理解和掌握如何利用J2ME技术实现设备间的蓝牙通信,并构建具有联网功能的游戏。 首先,我们需要理解J2ME的基本架构。J2ME由配置...

    基于J2ME的手机蓝牙联网游戏的研究及实现

    《基于J2ME的手机蓝牙联网游戏的研究及实现》这篇文档深入探讨了如何利用Java Micro Edition(J2ME)技术开发手机蓝牙联网游戏。J2ME是Java平台的一个子集,专为资源有限的移动设备设计,如早期的智能手机和平板电脑...

    郭克华J2ME pdf版下载

    郭克华的《J2ME移动开发》PDF版是一份重要的学习资源,它专注于Java Micro Edition(J2ME)技术,这是Java平台的一个版本,主要用于嵌入式设备和移动电话的开发。J2ME为开发者提供了在小型设备上构建应用程序的能力...

    J2me 实例讲解(郭克华)

    通过"guokehua源代码",我们可以查看和学习郭克华提供的示例代码,这将帮助我们更好地理解和掌握以上提到的J2ME开发技术。通过阅读和分析源代码,我们可以学习到如何组织代码结构,解决特定问题,以及如何将理论知识...

    J2ME中使用Socket开发联网程序

    ### J2ME中使用Socket开发联网程序 #### 一、引言 在Java 2 Platform Micro Edition (J2ME) 的环境下,网络编程是实现移动设备间数据交换的关键技术之一。J2ME 提供了多种网络连接的方式,包括但不限于 HTTP、FTP...

    j2me游戏资源,分享给大家

    ### J2ME Proxy Servlet分析 在给定的部分代码中,我们看到一个名为`J2meProxy`的Servlet类,它继承自`HttpServlet`。这个类的作用是作为代理服务器,处理来自J2ME客户端的请求,并将这些请求转发到指定的URL,然后...

    j2me http通信demo

    本示例是一个关于J2ME实现HTTP通信的演示项目,旨在帮助开发者理解和应用相关技术。 首先,J2ME中的HTTP通信主要通过`javax.microedition.io.Connector`类和`HttpConnection`接口来实现。`HttpConnection`提供了对...

    J2ME 做的象棋游戏以及论文(支持蓝牙联网PVP)

    标题中的“J2ME 做的象棋游戏以及论文(支持蓝牙联网PVP)”表明这是一个基于Java Micro Edition(J2ME)平台开发的象棋游戏项目,它具有蓝牙连接功能,允许玩家进行面对面的对战,即Player versus Player(PVP)模式...

    J2ME游戏编程

    **Premier.Press.J2ME.ebook-LiB.chm**可能是关于J2ME游戏编程的电子书,其中可能包含了深入的理论讲解、实例分析和实战技巧。**file_id.diz**通常是一个文件标识文件,包含书的简短介绍。**LiB.nfo**可能包含书籍的...

    J2ME手机游戏开发技术详解

    - 使用J2ME进行联网游戏:讲解如何实现多人在线游戏,包括数据同步和通信协议。 7. **优化与性能** - 手机资源管理:考虑内存和CPU限制,优化代码以提高游戏性能。 - 资源打包:如何有效地压缩和打包图片、音频...

    J2ME手机游戏案例精编随书电子教程+实例+开发教程

    本教程旨在由浅入深地引导开发者掌握J2ME手机游戏的开发技术。首先,你需要理解J2ME的基础架构,包括 MIDP(Mobile Information Device Profile)和CLDC(Connected Limited Device Configuration),这两个组件是...

    游戏J2ME手机版源代码技术资料

    游戏J2ME(Java 2 Micro Edition)手机版源代码技术资料是针对移动设备开发游戏的开发者们的重要资源。J2ME作为一个轻量级的Java平台,广泛应用于早期的移动设备,如诺基亚、摩托罗拉等品牌的手机,用于开发各种各样...

    J2ME案例开发源代码

    通过分析这些**J2ME案例源码**,不仅可以学习到J2ME的编程技巧,还可以了解到如何在实际项目中应用这些技术,这对于提升J2ME开发能力非常有帮助。这些源码可以作为学习的实例,帮助开发者理解游戏逻辑、用户交互和...

    基于J2ME的Java游戏--五子棋的开发

    本文旨在探讨如何使用J2ME技术开发一个五子棋游戏,并实现人机对战和玩家之间的联网对战功能。 1.2 J2ME与五子棋游戏 J2ME平台提供了一套面向移动设备的编程接口,包括用户界面组件、网络通信模块等,使得开发者...

    基于J2ME仙剑奇侠传

    《基于J2ME的“仙剑奇侠传”》是一个专为初级开发者设计的移动游戏开发实例,旨在帮助他们理解并掌握Java Micro Edition (J2ME) 技术在游戏开发中的应用。J2ME是一种Java平台,主要用于开发运行在嵌入式设备,如手机...

    yuandaima.rar_j2me 实例

    **J2ME基础详解与实例...总的来说,J2ME实例学习是掌握J2ME技术的关键步骤。通过这些实例,你可以动手实践,从而巩固理论知识,提升实际编程技能。记住,实践出真知,不断地尝试和调试将使你在J2ME开发领域更加熟练。

Global site tag (gtag.js) - Google Analytics