介绍J2ME中的通用联网框架

java解析sgf格式文件简单实现 围棋棋谱一般被保存为sgf格式,要想在自己的网站中实现打谱功能,必要要会解析sgf文件,取出里面的对局信息和落子,楼主现在用一种比较简单的方法来解析它 说明:楼主所用的棋谱是从新浪围棋里下载来的,示例用的是第10届中国围棋龙星战半决赛江维杰VS辜梓豪 文件内容如下(其他sgf格式也差不多,就是有些字段的名字换了一下) ( TE[第10届中国围棋龙星战半决赛] RD[2019-05-28] ... 阅读详情

        通用联网框架在J2ME平台中扮演着十分重要的角色,如果没有它,我们写的应用程序对外人来说只能说“神秘”,而应用了通用联网框架进行联网的程序就显得“神奇”了。本文将对通用联网框架进行整体的分析,具体的应用会在后续的文章详细讲述。

        Generic Connection Framework(以下简称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接口,这样如果你做socket server的时候就可以通过使用这样的URL,socket://:port在你的设备上建立监听端口等待连接。SocketConnection继承了StreamConnection正好可以和ServerSocketConnection交相辉映。UDPDatagramConnection则是为了在分组数据交换中使用,他继承了DatagramConnection接口。ContentConnection接口中只定义了三个方法getEncoding(),getLength()和getType(),我们非常熟悉的HttpConnection就是他的子类,在HttpConnection中定义了大量的操作,Http联网功能也是MIDP规范中要求厂商必须支持的连接方式。现在你应该对层次比较清楚了吧,继续往下看如何使用GCF。

        GCF的是使用非常简单,主要集中在Connector的open()方法上。我们要做的就是提供一个标准的URL参数传递给open方法,例如为了得到一个HttpConnection我们应该写类似下面的代码,
String url = “http://myip:myport/myservlet”;
HttpConnection httpConn = (HttpConnection)Connector.open(url);
我们应该清楚这个URL的格式如何定义的,有兴趣的话你可以参考RFC2396,我这里只列入他的基本格式:{scheme}:[{target}][{parms}] ,针对不同的网络通信方式,你要做的就是写出不同的URL,并通过强制转换得到你需要的连接类型。这篇文章不提供如何进行数据传输的操作,你可以参考MIDP API文档中HttpConnection接口中的详细说明,也可以参考下面这篇文章http://blog.csdn.net/mingjava/archive/2004/07/07/36528.aspx
在数据传输结束后不要忘记关闭连接,这时候你就应该使用Connection中定义的close()方法了。
try {
    // Here close any open streams
    conn.close();
} catch (IOException ioe) {
    // Handle the exception.
    // Throw the exception, ignore it, or return an error.
}

         至此,关于GCF的整体介绍就结束了。我们应该清楚GCF的接口层次关系、掌握如何使用GCF。同时不要忘记把这个框架的设计铭记于心,事实上我觉得CLDC和MIDP中很多设计都值得我们去多多的思考。

FreeFEM++下载安装和使用 最近要利用机器学习求解一些偏微分方程,对于一些复杂的偏微分方程,需要一些精度比较高的参考解,导师推荐了FreeFEM++软件。首次使用,特此记录一下,以备以后查阅。 1、FreeFEM++简介 FreeFEM是开源的有限元模拟系统,有法国利翁斯实验室、埃尔和玛丽居里大学共同开发,在世界范围内广泛使用。 2、FreeFEM++去何处下载? 下载地址:https://freefem.org/ 点击Download,然后会跳转到 https://github.com/FreeFem/FreeFem-source 阅读详情

相关推荐

FANUC机器人有关动作速度倍率的相关系统变量-解释说明

FANUC机器人有关动作速度倍率的相关系统变量-解释说明 1.$SHFTOV_ENB 默认值:0 名称:位移倍率的有效/无效 含义:位移倍率功能,通过按住SHIFT键的同时按下倍率键,将速度倍率更改为5档 设定值:有效1; 无效0. 有SHFIT键:微速–低速–5%–50%–100% 2.MCRGRP[GROUP].MCR_GRP[GROUP].MCRG​RP[GROUP].PRGOVERRIDE 默认值:100 名称:程序倍率 含义:设定程序再生时的、机器人动作速度比率 设定值:0~100(%) 3.S

Robot_PLC_HMI_Automation 9284

SGF文件解读

sgf文件是Smart Game Format的简写,绝大多数棋谱文件都是用sgf格式的文件还现在几乎是个中对弈软件和大谱程序都支持sgf格式!可以说是棋谱文件事实上的标准,清晰 小巧易用方便,深受棋友的喜欢,不少汽油对sgf文件中标志不是很明白,最近翻译了一篇关于sgf文件文章,与大家分享,由于本人英文水平有限,有些专业术语很难翻译准确,附上原文,看不明白的地方自己还是直接看原文。 AB: ...

wanfan的专栏 6670

如何将带手数的围棋对弈截图转化为SGF文件?关键技术及实现思路分享

作为一项古老的棋类游戏,拥如何将带手数的围棋对弈截图转化为SGF文件?关键技术及实现思路分享有深厚的文化底蕴和复杂的棋局变化。无论是初学者还是高手,都离不开这一提升棋艺的重要环节。复盘不仅帮助我们反思自己的落子思路,还能通过借鉴名局、模拟对战进一步提升。然而,现实中一个常见的困扰是:当我们在网站上欣赏一局精彩的对弈时,却无法轻松下载棋谱。特别是许多在线平台,我们只能截取带手数标注的棋盘截图,却无法导出棋谱。

weixin_57415718的博客 3076

如何用Sabaki快速打开和分析SGF棋谱文件:围棋爱好者的完整指南

Sabaki是一款优雅的围棋棋盘和SGF编辑器,专为现代围棋爱好者设计。本文将详细介绍如何使用Sabaki快速打开、查看和分析SGF格式的棋谱文件,帮助你轻松掌握这款工具的核心功能。 ## 为什么选择Sabaki分析SGF棋谱? Sabaki作为一款专业的围棋工具,提供了直观的界面和强大的分析功能,让你能够轻松探索围棋对局的每一个细节。无论是学习职业棋手的经典对局,还是分析自己的实战棋谱,Sa

gitblog_01088的博客 1107

EidoGo:开源围棋重播器与角石辅导工具

本文还有配套的精品资源,点击获取 简介:EidoGo是一个基于Web的开源围棋工具,支持SGF格式重播和角石分析,适用于围棋学习和研究。该平台模块化设计允许用户自定义和扩展功能,以适应不同用户需求。它支持多平台使用,并提供角石辅导功能,帮助围棋爱好者提高开局技巧。开源特性鼓励社区贡献和协作,推动围棋技术的数字化发展。 1. EidoGo项目概述与目标 Eid...

weixin_34438187的博客 1096

通过实例说明J2ME通用联网框架的使用

      尽管目前的无线网络不够理想,手机联网还是给我们开发人员不小的震撼的。毕竟这真的是件神奇的事情,不是吗?本文将讲述如何应用J2ME平台中的通用联网框架开发联网的应用程序。       首先,必须说明一点:MIDP中规定,任何移动信息设备都必须提供通过http协议的支持,而像其他的通信方式例如socket是设备相关的。有些手机会支持,有些则不支持。这里只大概的说明一下http协议相关的内容

mingjava的专栏 5757

J2ME通用联网框架

<br /> 用J2ME通用联网框架开发联网的应用程序尽管目前的无线网络不够理想,手机联网还是给我们开发人员不小的震撼的。毕竟这真的是件神奇的事情,不是吗?本文将讲述如何应用J2ME平台中的通用联网框架开发联网的应用程序。  <br /><br />      首先,必须说明一点:MIDP中规定,任何移动信息设备都必须提供通过http协议的支持,而像其他的通信方式例如socket是设备相关的。有些手机会支持,有些则不支持。这里只大概的说明一下http协议相关的内容,如果不了解这个方面的知识请参考http协

liwenbiao_1207的专栏 320

介绍J2ME通用联网框架

作者:mingjava  文章来源:http://www.j2medev.com/Article/ShowArticle.asp?ArticleID=18通用联网框架在J2ME平台中扮演着十分重要的角色,如果没有它,我们写的应用程序对外人来说只能说“神秘”,而应用了通用联网框架进行联网的程序就显得“神奇”了。本文将对通用联网框架进行整体的分析,具体的应用会在后续的文章详细讲述。     Gener

mobilechannel的专栏 762

通用联网框架在J2ME平台

通用联网框架在J2ME平台中扮演着十分重要的角色,如果没有它,我们写的应用程序对外人来说只能说“神秘”,而应用了通用联网框架进行联网的程序就显得“神奇”了。本文将对通用联网框架进行整体的分析,具体的应用会在后续的文章详细讲述。   Generic Connection Framework(以下简称GCF)是在CLDC中定义的,由于移动信息设备的资源受限特性,所以java.net和java.io包

wetgsg的专栏 480

用J2ME通用联网框架开发联网的应用程序

尽管目前的无线网络不够理想,手机联网还是给我们开发人员不小的震撼的。毕竟这真的是件神奇的事情,不是吗?本文将讲述如何应用J2ME平台中的通用联网框架开发联网的应用程序。    首先,必须说明一点:MIDP中规定,任何移动信息设备都必须提供通过http协议的支持,而像其他的通信方式例如socket是设备相关的。有些手机会支持,有些则不支持。这里只

冷枫@CSDN 1740

用 J2ME 进行联网

<br />源自:http://www.ibm.com/developerworks/cn/java/wi-jio/)<br />用 J2ME 进行联网<br />在小型设备上获取 Java 网络应用程序文档选项<br />将此页作为电子邮件发送<br />未显示需要 JavaScript 的文档选项<br /><br />级别: 初级<br />Soma Ghosh (sghosh@entigo.com ), 应用程序开发人员, Entigo<br />2002 年 12 月 09 日如果您一直都在关注无

有家客栈 君子不器 683

用C语言实现SGF格式围棋棋谱解析器

这是本人(liigo)独立实现的SGF格式围棋棋谱文件解析器,本文介绍其实现细节。网络上肯定可以找到完善的开源的SGF解析器,这是毋庸置疑的,我不直接使用它们,也不参考它们的实现代码,而是自己独立编码实现,是有原因的,因为我想自己重复发明轮子,并且认为这样更有助于提高我的编码能力。(关于我的“一定要学会重复发明轮子”的不成熟的论调,今后我将会专门撰文表述。)   我(liigo)开发的这个SGF

Liigo's blog 1万+

领悟 JavaScript 中的面向对象

领悟 JavaScript 中的面向对象 注:读完本文后请务必接着看完所有回复!JavaScript 是面向对象的。但是不少人对这一点理解得并不全面。在 JavaScript 中,对象分为两种。一种可以称为“普通对象”,就是我们所普遍理解的那些:数字、日期、用户自定义的对象(如:{})等等。还有一种,称为“方法对象”,就是我们通常定义的 function。你可能觉得奇怪:方法就是方法,怎么成了对象...

remember1989的专栏 292

理解Repeater组件

  当你使用Repeater组件时,你所做的就是创建一个MXML容器,此容器为数据源的每个记录重复它的内容。如果你有些弱智,不理解我所说的,那么几分钟之后你就完全理解了。但是在你开始之前,你需要做点铺垫工作。 1.关掉以前的所有文档。我们要用个新的。 2.创建一个新的Flex项目,命名为Chapter8_project。你也可以使用默认的MXML程序名(跟项目名一样)。 你使用Model标签...

wanfan的专栏 399

微信小程序源码DEMO大全完整版下载

微信小程序源代码下载|微信小程序源码DEMO大全完整版下载,微信小程序在现在是非常的火爆的,应该也是有很多的人都是在往这方面进行开发的,如果你是需要这类型的源代码的话,现在就可以免费的为你提供最新的微信小程序demo源码,相信你是非常的需要的!

上一篇: 精彩推荐JAVA MAP(Java爱好者不可错过)
下一篇: Java线程入门教程
mingjava
博客等级 码龄24年 68粉丝 114原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值