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>
分享到:
相关推荐
Flex AIR技术是由Adobe公司开发的一种框架,它允许开发者使用Adobe Integrated Runtime (AIR) 来创建跨平台的桌面应用程序。这些应用程序可以运行在Windows、Mac OS X和一些移动操作系统上。在应用程序的生命周期中...
在本主题“flex 窗口拖动与尺寸改变”中,我们将深入探讨如何实现Flex应用中的窗口操作功能。 首先,让我们理解窗口在Flex中的概念。在Flex中,我们通常使用`WindowedApplication`或`MX:Window`组件来创建一个独立...
- **Flex SDK**: 如果不使用 Flex Builder,可以手动安装和配置 Flex SDK 来创建 AIR 应用程序。 #### 3. 创建第一个 AIR 应用程序 - **使用 Flex Builder**: - **创建 AIR 工程**: 在 Flex Builder 中新建 AIR ...
protected function windowedApplication1_creationCompleteHandler(event:FlexEvent):void { socketServer = new ServerSocket(); socketServer.addEventListener(ServerSocketConnectEvent.CONNECT, ...
- **使用 Flex AIR 组件**: Flex 提供了一系列专门设计用于 AIR 应用的组件,这些组件可以帮助开发者快速构建界面并实现复杂的功能。 - WindowedApplication 组件: 用于创建窗口化应用程序的基础组件。 - HTML ...
#### 一、Flex与Adobe AIR简介 Flex是一个用于构建跨平台的桌面应用程序和移动应用程序的开源框架。它使用MXML(Mark-up Language)和ActionScript语言进行开发,并且能够通过Adobe AIR(Adobe Integrated Runtime...
Flex框架包含了一系列预定义的可重用组件,如容器(Panel、WindowedApplication)、控件(Button、TextInput)和图表(Chart)。开发者可以自定义组件以满足特定需求,或者利用现有的第三方组件库。 Flex还支持数据...
在Flex中,`List`组件可以用来显示可选择的项目列表,通常与数据提供器结合使用,将数据模型映射到可视元素上。 `mywin.mxml`可能是一个弹出窗口或对话框,它是Flex中的`PopUpWindow`或`WindowedApplication`组件...
### flex通过AlivePDF生成PDF文档 #### 知识点概览 本文将详细介绍如何使用Flex框架结合AlivePDF库来生成PDF文档。主要内容包括:AlivePDF的基本介绍、Flex环境搭建、AlivePDF类库详解以及实际代码示例分析。 ###...
在Flex中,TitleWindow是MX容器的一部分,它继承自WindowedApplication,提供了窗口化的外观和行为。TitleWindow通常用于创建对话框、设置窗口或任何需要独立显示内容的区域。默认情况下,TitleWindow不包含缩放功能...
Flex4引入了Spark组件库,其中`s:Window`和`s:WindowedApplication`是用于创建独立窗口的主要类。它们继承自`UIComponent`,提供了丰富的窗口特性,如标题、边框、大小调整等。 2. **添加最大化和最小化按钮**: ...
在Flex中,TitleWindow继承自WindowedApplication,而WindowedApplication则继承自Application。TitleWindow的特点在于它拥有一个内置的标题栏,标题栏上默认有关闭按钮。为了实现最大化和最小化功能,我们需要扩展...
在Flex面试中,考察的主要是开发者对Adobe Flex框架的理解和应用能力。以下是对题目中涉及知识点的详细解释: 一、类名修饰符的作用: 1. `public`: 公共访问修饰符,表示该类、变量或方法可以在任何地方被访问,...
在Flex中,我们可以使用WindowedApplication或Window类来创建独立的窗口。窗口间的互调意味着在不同窗口之间传递数据和控制流程,这对于大型应用来说至关重要。这通常通过事件监听、回调函数或者使用Flex的...
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <![CDATA[ import mx.controls.CheckBox; import mx.controls.Alert;...</mx:WindowedApplication>
在Flex中,应用通常包含一个主程序(通常是Application类的实例),以及可能的多个弹出窗口(如PopUpManager创建的弹出层或WindowedApplication)。这些组件形成了一个层次结构,允许父组件与子组件之间进行通信。 ...
在Flex开发过程中,实现全屏功能是常见的需求之一。本文将详细介绍如何通过点击按钮或双击操作来实现Flex应用的全屏切换。 ### 一、背景介绍 在Flex应用程序中,全屏模式可以让用户获得更沉浸式的体验。Adobe Flex...
"flex 窗体拖拽,可以自由拖拽,最大化,最小化等等"这一主题涉及到Flex中如何实现窗口的各种动态操作,包括但不限于窗体的移动、大小调整、最大化与最小化的功能。以下是对这些知识点的详细说明: 1. **窗体拖拽**...