`
dcrpp
  • 浏览: 44795 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

flex跟后台socket通信

    博客分类:
  • Flex
阅读更多

flex跟后台socket通信的例子,可以指定字符编码。

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
	<mx:Style source="css/style.css"/>
	<mx:Script source="script/FlexSocket.as"/>
	<mx:TextArea id="txtReceive" backgroundColor="#000000" color="#00FF00" editable="false"/>
	<mx:TextInput id="txtSend" focusOut="getFocus()"/>
	<mx:Button id="btnSend" label="Send" width="80" height="25" click="send()"/>
	
</mx:Application>

 

FlexSocket.as:

 

import flash.events.Event;
import flash.events.ProgressEvent;
import flash.net.Socket;
import flash.utils.ByteArray;

private var socket:Socket;

private var timer:Timer;

public function init():void
{
	this.focusManager.setFocus(txtSend);
	try{
		socket = new Socket();
	  	socket.addEventListener(Event.CONNECT, onConnect);
	 	socket.addEventListener(ProgressEvent.SOCKET_DATA, onReceive);
	 	socket.addEventListener(Event.CLOSE,onClose); 
		socket.connect( "localhost", 2900);
	}catch(event:Error){
		txtReceive.text += "socket连接失败!";
	}	
}

private function onConnect(event:Event):void {
	txtReceive.text += "socket 连接成功.....\r";
}

private function onReceive(event:ProgressEvent):void{
	var bytes:ByteArray = new ByteArray();
	while (socket.bytesAvailable) {
		socket.readBytes(bytes,0,socket.bytesAvailable);
	}
	var message:String;
	try {
		message = bytes.readMultiByte(bytes.length,"utf-8");
		//message = bytes.readUTFBytes(bytes.length).replace("\r\n","\r");
		txtReceive.text += message; 
	} catch (event:Error){
	
	}
	
	txtReceive.verticalScrollPosition = txtReceive.maxVerticalScrollPosition;
}	    

private function onClose(event:Event):void{
	txtReceive.text += "socket 连接断开.....\r";
}

private function sendMessage(message:String):void
{  
	var socketData:ByteArray = new ByteArray();			
	socketData.writeUTFBytes(message);  
	socket.writeBytes(socketData);  
	socket.flush();
}  

private function send():void{
	var message:String = txtSend.text + "\r" ;
	sendMessage(message);
	txtSend.text = "";
	this.focusManager.setFocus(txtSend);
}

 

Java版多线程socket服务端代码:

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class MultiThreadServer {
	private int port = 2900;
	private ServerSocket serverSocket;
	private ExecutorService executorService;// 线程池
	private final int POOL_SIZE = 10;// 单个CPU线程池大小

	public MultiThreadServer() throws IOException {
		serverSocket = new ServerSocket(port);
		// Runtime的availableProcessor()方法返回当前系统的CPU数目.
		executorService = Executors.newFixedThreadPool(Runtime.getRuntime()
				.availableProcessors()
				* POOL_SIZE);
		System.out.println("多线程socket服务器启动,在2900端口监听连接.....");
	}

	public void service() {
		Socket socket = null;
		while (true) {
			try {
				// 接收客户连接,只要客户进行了连接,就会触发accept();从而建立连接
				socket = serverSocket.accept();
				executorService.execute(new Handler(socket));
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

	public static void main(String[] args) throws IOException {
		new MultiThreadServer().service();
	}
}

class Handler implements Runnable {
	private Socket socket;

	public Handler(Socket socket) {
		this.socket = socket;
	}

	private PrintWriter getWriter(Socket socket) throws IOException {
		return new PrintWriter(socket.getOutputStream(), true);
	}

	private BufferedReader getReader(Socket socket) throws IOException {
		return new BufferedReader(new InputStreamReader(socket.getInputStream()));
	}

	public String echo(String msg) {
		try {
			return new String(("echo:" + msg).getBytes(),"utf-8");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return "";
	}

	public void run() {
		try {
			System.out.println("接收到新的连接来自: "
					+ socket.getInetAddress() + ":" + socket.getPort() + ",准备接收消息......");
			BufferedReader br = getReader(socket);
			PrintWriter pw = getWriter(socket);
			String msg = null;
			while ((msg = br.readLine()) != null) {
				System.out.println("接收到来自 "
						+ socket.getInetAddress() + ":" + socket.getPort() + " 的消息:\r\n" + msg);
				
                                 pw.println(echo(msg) );
				
				System.out.println("发送完毕:" + msg);
				if (msg.equals("bye"))
					break;
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if (socket != null)
					socket.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}
 

 

分享到:
评论

相关推荐

    flex C# 基于socket 通讯 应用程序源码

    在本示例中,"flex C# 基于socket 通讯 应用程序源码"描述了一个项目,该项目结合了这两种技术,通过Socket通信实现客户端和服务器端的数据交互。 Socket通信是网络编程的基础,它允许两个网络应用程序之间建立连接...

    FLEX 与现有开发语言的通信全面解析

    七、Flex与WebSocket的通信:Flex可以通过Socket类或WebSocket类实现与WebSocket服务器的双向实时通信,适用于需要低延迟和高实时性应用场景。 八、数据序列化与反序列化:在通信过程中,数据需要在不同平台间进行...

    Flex 利用socket断点续传

    在本项目中,"Flex 利用socket断点续传"是一个利用Flex技术和Socket通信协议实现的文件上传功能,特别支持在传输中断后从断点处继续上传,同时具备进度条显示,提升用户体验。 断点续传是一种在文件传输过程中,...

    java+flex基于socket的聊天案例

    在这个“java+flex基于socket的聊天案例”中,我们将深入探讨如何利用Java作为服务器端技术,Flex作为客户端展示层,通过Socket通信实现一个简单的聊天应用程序。 Java在后台处理业务逻辑和网络通信,它提供了...

    全AIR 的 Socket通信(air服务端、air客户端)

    综上所述,全AIR的Socket通信允许我们在没有依赖其他后台语言的情况下,使用ActionScript 3实现在AIR服务端和客户端之间的实时通信。通过精心设计和实现,我们可以构建出高效、稳定的网络应用程序。

    JsSocket,JS+FLEX+JAVA模拟的Js Soclet

    JsSocket 是使用js + flex + java开发的一套基于web的socket通信组件 主要解决大家在开发web项目时需要用到前台与后台时时通信时的问题,除了HTML5的WebSocket之外,之前大家使用的方法一般为:1、页面间断刷新;2、...

    C#+Flex 在线聊天

    通过Socket通信协议,我们将实现消息的高效传输,为用户提供流畅的聊天体验。 首先,我们要理解C#在后台服务器中的角色。C#是一种面向对象的编程语言,特别适合构建服务端应用程序。在这里,它将负责处理用户的登录...

    flex前台和后台交互例子

    5. **Socket通信** 对于需要低延迟、高吞吐量的应用,Flex还可以使用Socket接口与服务器进行双向通信。这种方式需要服务器端同样支持Socket编程。 6. **事件驱动的通信模型** 在Flex中,前端与后端的交互通常是...

    flexjava-sockete.rar

    综上所述,"flexjava-sockete.rar"文件可能包含了一个使用FlexJava进行Socket通信的实例,涵盖了从基础的Socket连接创建到数据传输、异常处理以及可能的多线程和安全性方面的内容。通过学习和实践这个项目,开发者...

    flex原创音乐网站(全站带后台)

    这可能通过Socket通信实现,Flash Player支持创建TCP或UDP连接,进行数据交换。 4. **用户系统**:注册、登录、个人中心等功能是音乐网站的基础。这需要用户认证机制、会话管理,以及可能的权限控制。 5. **音乐...

    csss.rar_flex_flex 聊天

    8. **数据绑定**:Flex支持数据绑定,可以将视图组件的状态直接与后台模型数据关联,当数据发生变化时,视图会自动更新,这对于聊天应用中实时显示新消息非常有用。 9. **状态管理和历史管理**:在聊天应用中,可能...

    ActionScript简单的Socket聊天室系统

    **Socket通信** Socket是网络编程中的基础概念,它提供了进程间通信的一种方式,允许不同计算机上的应用程序通过网络进行数据交换。在AS3.0中,Socket类提供了实现客户端-服务器模型的能力,使得聊天室系统能够发送...

    flex聊天程序客户端

    2. **Socket通信**:为了实现即时通讯,Flex客户端可能会使用Socket连接与服务器保持长连接,以便实时接收和发送消息。 3. **状态管理**:在聊天应用中,用户会话的状态管理非常重要,包括登录、注销、在线状态显示...

    基于java+flex实现的聊天程序

    Java与Flex之间的通信是通过Socket连接实现的,它们之间发送的是二进制或文本格式的数据,通常采用JSON或自定义协议来封装消息,以便于解码和处理。这样的设计使得聊天系统的响应速度和效率得到了保证。 总的来说,...

    Flex + java 推送技术示例

    Flex可以通过使用第三方库如Socket.IO或Flash WebSocket API与Java后台建立WebSocket连接,实现数据的实时推送。 2. **Flex推送技术实现** - **Polling(轮询)**:简单轮询是最基础的推送实现,客户端定时向...

    flex_oralce小例子 - flex4.rar

    5. ServiceBuilder或Proxy类:Flex4中,ServiceBuilder工具或者自定义的Proxy类可以用来生成与后台服务交互的AS3类。这些类通常包含了调用远程方法、处理结果集和异常的能力。 6. Oracle数据库连接:Oracle JDBC...

    Adobe_Flex_2.0.1_Language_Reference

    Flex提供了对HTTP、Socket和XMLSocket协议的支持,允许应用程序访问远程数据和服务。文档涵盖了关于网络请求、响应和数据传输的所有细节。 **图形和动画** Flex SDK包含一套强大的图形和动画工具,如绘图API和...

    Flex+java上传开发工具包

    这个库可能包含了对socket通信、流处理、数据缓冲等方面的类和方法,以优化文件传输的性能和稳定性。在Java中,良好的I/O处理对于处理大文件至关重要,因为它可以有效地减少内存占用并提高传输速度。 在Flex端,它...

    FlexFTP实例源码

    3. **Socket通信**:FTP协议基于TCP/IP的Socket通信,因此在FlexFTP的源码中,开发者可能使用了ActionScript 3的Socket类来建立与FTP服务器的连接,发送和接收FTP命令。 4. **FTP命令和响应**:FTP协议定义了一系列...

    flash+flex+air移动开发入门经典(1)源码

    8. **网络通信**:使用Flash的Socket、HTTPService等类进行数据的发送和接收,实现与服务器的交互。 9. **本地存储**:了解如何使用Air的File和FileStream类进行本地文件读写,以及Preferences API进行设置存储。 ...

Global site tag (gtag.js) - Google Analytics