`
liuyxit
  • 浏览: 37391 次
  • 性别: Icon_minigender_1
  • 来自: 佛山
社区版块
存档分类
最新评论

Flex AIR(WindowedApplication)与Java的socket通讯例子。

阅读更多
Socket服务器:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;

class SimpleServer {
	private static SimpleServer simpleServer;
	private ServerSocket server;
	private Socket client;
	private BufferedReader reader;
	private BufferedWriter writer;

	public static void main(String[] args) {
		int port = 9999;

		try {
			port = Integer.parseInt(args[0]);
		} catch (ArrayIndexOutOfBoundsException e) {
			// Catch exception and keep going.
		}

		simpleServer = new SimpleServer(port);
	}

	private SimpleServer(int port) {
		System.out.println(">> Starting SimpleServer");
		try {
			server = new ServerSocket(port);
			client = server.accept();
			reader = new BufferedReader(new InputStreamReader(client
					.getInputStream(), "UTF-8"));
			writer = new BufferedWriter(new OutputStreamWriter(client
					.getOutputStream(), "UTF-8"));

			writer.write("输入\"EXIT\"退出.\r");
			System.out.println("输入\"EXIT\"退出.");
			boolean done = false;
			while (!done) {
				String str = reader.readLine();
				if (str == null) {
					done = true;
				} else {
					if (str.trim().equals("EXIT")) {
						done = true;
					} else {
						str = "我接收到(server):" + str.trim() + "\r";
						out(str);
					}
				}

			}
			client.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private void out(String str) {
		try {
			writer.write(str);
			writer.flush();
			System.out.println(str);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}


用法:
1.代码另存为SimpleServer.java
2.javac SimpleServer.java
3.java SimpleServer

Socket客户端:
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
						layout="vertical"
						applicationComplete="appComp()">
	<mx:Script>
		<![CDATA[
			private var socketServer:Socket;
			[Bindable]
			private var response:String="";

			private function appComp():void
			{
				//连接服务器
				var server:String="localhost";
				var port:int=9999;

				socketServer=new Socket(server, port);
				//配置事件监听器
				configListeners();
			}

			/**
			 * 配置事件监听器
			 */
			private function configListeners():void
			{
				//socket关闭事件
				socketServer.addEventListener(Event.CLOSE, closeHandler);
				//socket连接成功事件
				socketServer.addEventListener(Event.CONNECT, connectHandler);
				//socket连接不成功出的IO错误事件
				socketServer.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
				//访问权限出错事件
				socketServer.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
				//
				socketServer.addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler);

			}

			//socket写字节函数
			private function writeln(str:String):void
			{
				str+="\n";
				try
				{
					socketServer.writeUTFBytes(str);
				}
				catch (e:IOError)
				{
					trace(e);
				}
			}
			
			//发送信息函数
			private function sendRequest():void
			{
				trace("sendRequest");
				response+=inTxt.text + "\n";
				writeln(inTxt.text);
				socketServer.flush();
				inTxt.text = "";
			}
			
			//读入响应信息函数
			private function readResponse():void
			{
				var str:String=socketServer.readUTFBytes(socketServer.bytesAvailable);
				response+=str;
			}
			
			/**
			 * 关闭处理函数
			 */
			private function closeHandler(event:Event):void
			{
				trace("closeHandler: " + event);
				trace(response.toString());
			}
			
			/**
			 * 连接成功处理函数
			 */
			private function connectHandler(event:Event):void
			{
				trace("connectHandler: " + event);
				response+="已连接"
			}
			
			/**
			 * socket的IO错误处理函数
			 */
			private function ioErrorHandler(event:IOErrorEvent):void
			{
				trace("ioErrorHandler: " + event);
			}
			
			/**
			 * 安全错误处理函数
			 */
			private function securityErrorHandler(event:SecurityErrorEvent):void
			{
				trace("securityErrorHandler: " + event);
			}
			
			/**
			 * socket处理函数
			 */
			private function socketDataHandler(event:ProgressEvent):void
			{
				trace("socketDataHandler: " + event);
				readResponse();
			}
			
			/**
			 * 发送按钮点击事件处理函数
			 */
			private function onClick(evt:Event):void
			{
				sendRequest();
			}
		]]>
	</mx:Script>

	<mx:TextArea text="{response}"
				 id="outTxt"
				 height="126"
				 width="283"
				 fontSize="12"/>
	<mx:HBox verticalAlign="bottom"
			 width="282"
			 height="40">
		<mx:TextArea id="inTxt"
					 width="100%"
					 height="100%"
					 fontSize="12"/>
		<mx:Button label="发送"
				   fontSize="12"
				   click="onClick(event)"/>
	</mx:HBox>
</mx:WindowedApplication>



分享到:
评论
1 楼 zwljava 2012-07-28  
不错,整合java和air比较方便的办法。

相关推荐

    air执行exe

    flex的air程序中执行exe s:WindowedApplication

    flex导出excel的代码

    &lt;mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"&gt; &lt;![CDATA[ import mx.controls.CheckBox; import mx.controls.Alert;...&lt;/mx:WindowedApplication&gt;

    RobotLegs-V2:RobotLegs 2.2.1 开发 flex 应用程序示例

    机器人腿 2.2.1 示例应用程序... s : WindowedApplication xmlns : fx = " http://ns.adobe.com/mxml/2009 " xmlns : s = " library://ns.adobe.com/flex/spark " xmlns : mx = " library://ns.adobe.com/flex/mx "

    puremvc-as3-util-air-desktopcitizen:PureMVC AS3 AIR实用程序

    实用程序:桌面公民(AIR) 此实用程序使基于PureMVC的AIR应用程序能够在每次启动时记住其窗口大小,位置和最大化状态。 它还提供了一种在关闭应用程序窗口之前要求确认(或执行某些关闭过程)的功能。 包括标准版...

    3796 i-FRAME 安装、操作和维护手册

    3796 i-FRAME 安装、操作和维护手册

    我的visio画图 资源备用

    我的visio画图

    NPOI是指构建在POI 3.x版本之上的一个程序

    NPOI可以在没有安装Office的情况下对Word或Excel进行读写,NPOI是一个开源的C#读写Excel、WORD等微软OLE2组件文档的项目

    基于STM32F103C8单片机设计-旋转编码器数码管显示程序KEIL工程源码.zip

    STM32学习软件编程资料,STM32F103C8单片机经典外设应用设计实例软件源代码,KEIL工程文件,可供学习参考。

    VoLTE高丢包优化指导书.xlsx

    VoLTE高丢包优化指导书

    LTE容量优化高负荷小区优化指导书.docx

    5G通信行业、网络优化、通信工程建设资料

    中国移动无线、传输专业项目全生命周期、建设期、施工期控制标准.docx

    5G通信行业、网络优化、通信工程建设资料

    基于Springboot+Vue校园周边美食探索及分享平台毕业源码案例设计.zip

    网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。系统化是必要的,设计网上系统不仅会节约人力和管理成本,还会安全保存庞大的数据量,对于信息的维护和检索也不需要花费很多时间,非常的便利。 网上系统是在MySQL中建立数据表保存信息,运用SpringBoot框架和Java语言编写。并按照软件设计开发流程进行设计实现。系统具备友好性且功能完善。 网上系统在让售信息规范化的同时,也能及时通过数据输入的有效性规则检测出错误数据,让数据的录入达到准确性的目的,进而提升数据的可靠性,让系统数据的错误率降至最低。 关键词:vue;MySQL;SpringBoot框架 【引流】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    基于Springboot+Vue善筹网(众筹)前后台实现设计-毕业源码案例设计.zip

    网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。系统化是必要的,设计网上系统不仅会节约人力和管理成本,还会安全保存庞大的数据量,对于信息的维护和检索也不需要花费很多时间,非常的便利。 网上系统是在MySQL中建立数据表保存信息,运用SpringBoot框架和Java语言编写。并按照软件设计开发流程进行设计实现。系统具备友好性且功能完善。 网上系统在让售信息规范化的同时,也能及时通过数据输入的有效性规则检测出错误数据,让数据的录入达到准确性的目的,进而提升数据的可靠性,让系统数据的错误率降至最低。 关键词:vue;MySQL;SpringBoot框架 【引流】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    203ssm-mysql-jsp 包头市交通管理局路况查询系统.zip(可运行源码+数据库文件+)

    该课题主要是以SpringMVC模式运行的,采用了mysql数据库进行数据的管理,掌握并且熟练使用百度API相关技术。系统分为了管理员用户和一般用户,主要有以下模块: 管理员用户: 1.实时路况管理:实时路况的信息采用了百度地图进行直观的管理,利用了GIS相关技术进行管理,能够让用户方便的第一时间查看到相应的地图信息,以及实时路况信息。 2.投诉留言管理:实现了对投诉留言信息的查看和回复。 3.系统信息设置:实现了系统的访问数据的统计,以及针对系统的管理员 用户和管理员密码进行管理。 4.用户信息管理:管理了一般用户的基本信息情况,针对用户的资料进行修改管理。 一般用户: 1.用户资料管理:实现了用户个人的资料信息管理。 2.路况信息查看:实现了对路径的实时信息的查看,某个路段在某时间的交通情况的查看,以三种情况代表路况情况(拥挤、缓行和畅通) 3.路况分析:采用了折线图,分析每天或者某个月的路况信息,以折线图形式直观展示。该功能采用jFreeChart库实现。 4.留言发布:针对一些路况信息,进行留言反馈,并能查看管理员反馈信息。

    施工现场安全技术交底模板.doc

    5G通信行业、网络优化、通信工程建设资料。

    GSM室分优化掉话专题总结报告.docx

    5G通信、网络优化与通信建设

    通信线缆基本理论.docx

    5G通信行业、网络优化、通信工程建设资料。

    node-v12.20.1-sunos-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    199-数据安全治理的思考与规划-论剑.pdf

    199-数据安全治理的思考与规划-论剑.pdf

    SPVLoc: Semantic Panoramic Viewport Matching for 6D Camera Local

    SPVLoc: Semantic Panoramic Viewport Matching for 6D Camera Localization in Unseen Environments

Global site tag (gtag.js) - Google Analytics