在J2ME中基于UDP协议编程[1]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:

作者:mingjava   文章来源:http://www.j2medev.com/Article/ShowArticle.asp?ArticleID=129

在GCF中提供了DatagramConnection和Datagram两个接口,借助他们我们可以在J2ME中基于UDP协议开发联网应用程序,在MIDP2.0中,添加了UDPDatagramConnection这个接口。他扩展了DatagramConnection并添加了两个方法getLocalAddress()和getLocalPort()。我们知道UDP服务是不可靠的,如果你希望开发更可靠的联网应用的话可以采用SocketConnection,因为TCP服务是面向连接且可靠的。我们还必须清楚地一点是以上所说的各种连接方式都不是MIDP规范中规定必须实现的。因此在使用之前请参考特定设备的开发文档。MIDP中只有Http连接是必须支持的。

    同样,我们要获得DatagramConnection的话,必须通过Connector的open方法,其中的URL应该满足如下的形式。

  1. datagram://localhost:5555 这样的话表示建立了一个客户端模式的连接。在指定ip:localhost和指定端口:5555
  2. datagram://:5555  这样建立的是一个服务器端模式的连接,在本地的5555端口。

建立连接后,我们可以通过DatagramConnection的newDatagram()方法构造一个Datagram,然后调用DatagramConnection的send()方法。这样数据报将会发送到指定的接受方。例如你可以构建这个一个负责发送数据的Sender类。

package com.siemens.datagramtest;

import javax.microedition.io.Datagram;
import javax.microedition.io.DatagramConnection;

public class Sender extends Thread
{

    private DatagramConnection dc;

    private String address;

    private String message;

    public Sender(DatagramConnection dc)
    {
        this.dc = dc;
        start();
    }

    public synchronized void send(String addr, String msg)
    {
        address = addr;
        message = msg;
        notify();
    }

    public synchronized void run()
    {

        while (true)
        {

            // If no client to deal, wait until one connects
            if (message == null)
            {
                try
                {
                    wait();
                } catch (InterruptedException e)
                {
                }
            }

本文关键:在J2ME中基于UDP协议编程
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top