岁月联盟 · 中国技术网 本站主页 | 安全认证 | 用户服务 | 技术论坛
新闻快报 | 新手学堂 | 黑客特区 | 程序语言 | 数 据 库 | 防 火 墙 | 路由交换 | 系统集成 | 服 务 器 | 存储备份 | 考试认证
Windows | Linux | Java | 协议分析 | 问题解答 | 进程大全 | 网页设计 | 多 媒 体 | 图库资料 | 软件下载 | 站内下载
  您现在的位置: 岁月联盟 >> Java >> J2ME >> 无线开发 >> Java正文
J2ME中使用Socket开发联网程序
作者:未知 文章来源:本站整理 点击数: 更新时间:2007-7-22 22:54:56
  在J2ME中基于UDP协议编程一文中介绍了如何使用Datagram和DatagramConnection来开发应用程序,本文将主要讲述在MIDP2.0中使用ServerSocketConnection和SocketConnection来开发联网应用程序。TCP协议是可以保证传输的质量的,这也是他和UDP的一大区别。由于以上谈到的四个类都属于GCF,他们在程序编写方面也非常相似,通常我们在Server端的某个端口监听,当客户端连接服务器的时候,则可以得到一个SocketConnection的实例。通过两端的SocketConnection则可以实现C/S结构的通信了。

  首先看一下,ServerSocketConnection类,它的一个非常重要的方法就是acceptAndOpen()方法,这个方法返回一个SocketConnection实例,从而使得客户端和服务器端可以通过socket通信了。典型的代码如下:

// Create the server listening socket for port 1234

ServerSocketConnection scn = (ServerSocketConnection)

Connector.open("socket://:1234");

// Wait for a connection.

SocketConnection sc = (SocketConnection) scn.acceptAndOpen();

// Set application specific hints on the socket.

sc.setSocketOption(DELAY, 0);

sc.setSocketOption(LINGER, 0);

sc.setSocketOption(KEEPALIVE, 0);

sc.setSocketOption(RCVBUF, 128);

sc.setSocketOption(SNDBUF, 128);

// Get the input stream of the connection.

DataInputStream is = sc.openDataInputStream();

// Get the output stream of the connection.

DataOutputStream os = sc.openDataOutputStream();

// Read the input data.

String result = is.readUTF();

// Echo the data back to the sender.

os.writeUTF(result);

// Close everything.

is.close();

os.close();

sc.close();

scn.close();

..

  SocketConnection的使用也是非常简单,通过Connector的open方法我们可以得到一个SocketConnection的实例。

SocketConnection sc = (SocketConnection)

Connector.open("socket://host.com:79");

sc.setSocketOption(SocketConnection.LINGER, 5);


InputStream is = sc.openInputStream();

OutputStream os = sc.openOutputStream();


os.write("\r\n".getBytes());

int ch = 0;

while(ch != -1) {

 ch = is.read();

}


is.close();

os.close();

sc.close();

  其实我们在用socket编写程序的时候无非遵循这样的一种规则:服务器端建立监听端口等待连接,客户端通过open()方法与服务器端建立连接,两端通过建立的socket传输数据,关闭连接。

  下图是我在运行WTK中NetworkDemo的时候的截图!代码也一并发表出来。


 

[1] [2] 下一页  

package socket;

import javax.microedition.midlet.*;

import javax.microedition.io.*;

import javax.microedition.lcdui.*;

import java.io.*;

public class SocketMIDlet extends MIDlet implements CommandListener {

 private static final String SERVER = "Server";

 private static final String CLIENT = "Client";

 private static final String[] names = { SERVER, CLIENT };

 private static Display display;

 private Form f;

 private ChoiceGroup cg;

 private boolean isPaused;

 private Server server;

 private Client client;

 private Command exitCommand = new Command("Exit", Command.EXIT, 1);

 private Command startCommand = new Command("Start", Command.ITEM, 1);

 public SocketMIDlet() {

display = Display.getDisplay(this);

f = new Form("Socket Demo");

cg = new ChoiceGroup("Please select peer",

Choice.EXCL

[1] [2] [3] [4] 下一页


  • 上一个Java:
  • 下一个Java:
  •  
    热门文章
    推荐文章
    关于我们 | 发展历程 | 网站地图 | 广告服务 | 招贤纳士 | 战略合作 | 友情链接 | 著作声明 | 联系我们
    Copyright © 2002-2007 SYUE All rights reserved.
    E_mail:Admin@Syue.Com 皖ICP备05004589号
    未经授权禁止转载、摘编、复制或建立镜像.如有违反,追究法律责任.
    传世私服 传奇世界私服 天龙八部私服 bet365 传世私服 天龙八部私服 热血江湖私服 英雄合击传奇私服 热血江湖私服 bet365 bet365