`
liuyxit
  • 浏览: 37700 次
  • 性别: 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比较方便的办法。

相关推荐

    Flex AIR 重启需要修改的配置文件

    Flex AIR技术是由Adobe公司开发的一种框架,它允许开发者使用Adobe Integrated Runtime (AIR) 来创建跨平台的桌面应用程序。这些应用程序可以运行在Windows、Mac OS X和一些移动操作系统上。在应用程序的生命周期中...

    flex 窗口拖动与尺寸改变

    在本主题“flex 窗口拖动与尺寸改变”中,我们将深入探讨如何实现Flex应用中的窗口操作功能。 首先,让我们理解窗口在Flex中的概念。在Flex中,我们通常使用`WindowedApplication`或`MX:Window`组件来创建一个独立...

    AIR应用开发中文指南

    - **Flex SDK**: 如果不使用 Flex Builder,可以手动安装和配置 Flex SDK 来创建 AIR 应用程序。 #### 3. 创建第一个 AIR 应用程序 - **使用 Flex Builder**: - **创建 AIR 工程**: 在 Flex Builder 中新建 AIR ...

    as3 Air ServerSocket

    protected function windowedApplication1_creationCompleteHandler(event:FlexEvent):void { socketServer = new ServerSocket(); socketServer.addEventListener(ServerSocketConnectEvent.CONNECT, ...

    AIR应用开发中文指南.pdf

    - **使用 Flex AIR 组件**: Flex 提供了一系列专门设计用于 AIR 应用的组件,这些组件可以帮助开发者快速构建界面并实现复杂的功能。 - WindowedApplication 组件: 用于创建窗口化应用程序的基础组件。 - HTML ...

    air执行exe

    #### 一、Flex与Adobe AIR简介 Flex是一个用于构建跨平台的桌面应用程序和移动应用程序的开源框架。它使用MXML(Mark-up Language)和ActionScript语言进行开发,并且能够通过Adobe AIR(Adobe Integrated Runtime...

    Flex

    Flex框架包含了一系列预定义的可重用组件,如容器(Panel、WindowedApplication)、控件(Button、TextInput)和图表(Chart)。开发者可以自定义组件以满足特定需求,或者利用现有的第三方组件库。 Flex还支持数据...

    Flex 弹出窗口的数据传输

    在Flex中,`List`组件可以用来显示可选择的项目列表,通常与数据提供器结合使用,将数据模型映射到可视元素上。 `mywin.mxml`可能是一个弹出窗口或对话框,它是Flex中的`PopUpWindow`或`WindowedApplication`组件...

    flex通过AlivePDF生成PDF文档

    ### flex通过AlivePDF生成PDF文档 #### 知识点概览 本文将详细介绍如何使用Flex框架结合AlivePDF库来生成PDF文档。主要内容包括:AlivePDF的基本介绍、Flex环境搭建、AlivePDF类库详解以及实际代码示例分析。 ###...

    Flex中支持缩放的TitleWindow

    在Flex中,TitleWindow是MX容器的一部分,它继承自WindowedApplication,提供了窗口化的外观和行为。TitleWindow通常用于创建对话框、设置窗口或任何需要独立显示内容的区域。默认情况下,TitleWindow不包含缩放功能...

    flex最大化最小化关闭

    Flex4引入了Spark组件库,其中`s:Window`和`s:WindowedApplication`是用于创建独立窗口的主要类。它们继承自`UIComponent`,提供了丰富的窗口特性,如标题、边框、大小调整等。 2. **添加最大化和最小化按钮**: ...

    Flex带最大化最小化的TitleWindow

    在Flex中,TitleWindow继承自WindowedApplication,而WindowedApplication则继承自Application。TitleWindow的特点在于它拥有一个内置的标题栏,标题栏上默认有关闭按钮。为了实现最大化和最小化功能,我们需要扩展...

    Flex面试试题(By稻田).doc

    在Flex面试中,考察的主要是开发者对Adobe Flex框架的理解和应用能力。以下是对题目中涉及知识点的详细解释: 一、类名修饰符的作用: 1. `public`: 公共访问修饰符,表示该类、变量或方法可以在任何地方被访问,...

    flex 多级窗口互调连接oracle动态管理生成动态datagrid

    在Flex中,我们可以使用WindowedApplication或Window类来创建独立的窗口。窗口间的互调意味着在不同窗口之间传递数据和控制流程,这对于大型应用来说至关重要。这通常通过事件监听、回调函数或者使用Flex的...

    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;

    Flex--主程序与弹出窗口之间传递数据

    在Flex中,应用通常包含一个主程序(通常是Application类的实例),以及可能的多个弹出窗口(如PopUpManager创建的弹出层或WindowedApplication)。这些组件形成了一个层次结构,允许父组件与子组件之间进行通信。 ...

    flex点击按钮或双击实现全屏

    在Flex开发过程中,实现全屏功能是常见的需求之一。本文将详细介绍如何通过点击按钮或双击操作来实现Flex应用的全屏切换。 ### 一、背景介绍 在Flex应用程序中,全屏模式可以让用户获得更沉浸式的体验。Adobe Flex...

    flex 窗体拖拽,可以自由拖拽,最大化,最小化等等

    "flex 窗体拖拽,可以自由拖拽,最大化,最小化等等"这一主题涉及到Flex中如何实现窗口的各种动态操作,包括但不限于窗体的移动、大小调整、最大化与最小化的功能。以下是对这些知识点的详细说明: 1. **窗体拖拽**...

Global site tag (gtag.js) - Google Analytics