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 通讯 应用程序源码"描述了一个项目,该项目结合了这两种技术,通过Socket通信实现客户端和服务器端的数据交互。 Socket通信是网络编程的基础,它允许两个网络应用程序之间建立连接...
七、Flex与WebSocket的通信:Flex可以通过Socket类或WebSocket类实现与WebSocket服务器的双向实时通信,适用于需要低延迟和高实时性应用场景。 八、数据序列化与反序列化:在通信过程中,数据需要在不同平台间进行...
在本项目中,"Flex 利用socket断点续传"是一个利用Flex技术和Socket通信协议实现的文件上传功能,特别支持在传输中断后从断点处继续上传,同时具备进度条显示,提升用户体验。 断点续传是一种在文件传输过程中,...
在这个“java+flex基于socket的聊天案例”中,我们将深入探讨如何利用Java作为服务器端技术,Flex作为客户端展示层,通过Socket通信实现一个简单的聊天应用程序。 Java在后台处理业务逻辑和网络通信,它提供了...
综上所述,全AIR的Socket通信允许我们在没有依赖其他后台语言的情况下,使用ActionScript 3实现在AIR服务端和客户端之间的实时通信。通过精心设计和实现,我们可以构建出高效、稳定的网络应用程序。
JsSocket 是使用js + flex + java开发的一套基于web的socket通信组件 主要解决大家在开发web项目时需要用到前台与后台时时通信时的问题,除了HTML5的WebSocket之外,之前大家使用的方法一般为:1、页面间断刷新;2、...
通过Socket通信协议,我们将实现消息的高效传输,为用户提供流畅的聊天体验。 首先,我们要理解C#在后台服务器中的角色。C#是一种面向对象的编程语言,特别适合构建服务端应用程序。在这里,它将负责处理用户的登录...
5. **Socket通信** 对于需要低延迟、高吞吐量的应用,Flex还可以使用Socket接口与服务器进行双向通信。这种方式需要服务器端同样支持Socket编程。 6. **事件驱动的通信模型** 在Flex中,前端与后端的交互通常是...
综上所述,"flexjava-sockete.rar"文件可能包含了一个使用FlexJava进行Socket通信的实例,涵盖了从基础的Socket连接创建到数据传输、异常处理以及可能的多线程和安全性方面的内容。通过学习和实践这个项目,开发者...
这可能通过Socket通信实现,Flash Player支持创建TCP或UDP连接,进行数据交换。 4. **用户系统**:注册、登录、个人中心等功能是音乐网站的基础。这需要用户认证机制、会话管理,以及可能的权限控制。 5. **音乐...
8. **数据绑定**:Flex支持数据绑定,可以将视图组件的状态直接与后台模型数据关联,当数据发生变化时,视图会自动更新,这对于聊天应用中实时显示新消息非常有用。 9. **状态管理和历史管理**:在聊天应用中,可能...
**Socket通信** Socket是网络编程中的基础概念,它提供了进程间通信的一种方式,允许不同计算机上的应用程序通过网络进行数据交换。在AS3.0中,Socket类提供了实现客户端-服务器模型的能力,使得聊天室系统能够发送...
2. **Socket通信**:为了实现即时通讯,Flex客户端可能会使用Socket连接与服务器保持长连接,以便实时接收和发送消息。 3. **状态管理**:在聊天应用中,用户会话的状态管理非常重要,包括登录、注销、在线状态显示...
Java与Flex之间的通信是通过Socket连接实现的,它们之间发送的是二进制或文本格式的数据,通常采用JSON或自定义协议来封装消息,以便于解码和处理。这样的设计使得聊天系统的响应速度和效率得到了保证。 总的来说,...
Flex可以通过使用第三方库如Socket.IO或Flash WebSocket API与Java后台建立WebSocket连接,实现数据的实时推送。 2. **Flex推送技术实现** - **Polling(轮询)**:简单轮询是最基础的推送实现,客户端定时向...
5. ServiceBuilder或Proxy类:Flex4中,ServiceBuilder工具或者自定义的Proxy类可以用来生成与后台服务交互的AS3类。这些类通常包含了调用远程方法、处理结果集和异常的能力。 6. Oracle数据库连接:Oracle JDBC...
Flex提供了对HTTP、Socket和XMLSocket协议的支持,允许应用程序访问远程数据和服务。文档涵盖了关于网络请求、响应和数据传输的所有细节。 **图形和动画** Flex SDK包含一套强大的图形和动画工具,如绘图API和...
这个库可能包含了对socket通信、流处理、数据缓冲等方面的类和方法,以优化文件传输的性能和稳定性。在Java中,良好的I/O处理对于处理大文件至关重要,因为它可以有效地减少内存占用并提高传输速度。 在Flex端,它...
3. **Socket通信**:FTP协议基于TCP/IP的Socket通信,因此在FlexFTP的源码中,开发者可能使用了ActionScript 3的Socket类来建立与FTP服务器的连接,发送和接收FTP命令。 4. **FTP命令和响应**:FTP协议定义了一系列...
8. **网络通信**:使用Flash的Socket、HTTPService等类进行数据的发送和接收,实现与服务器的交互。 9. **本地存储**:了解如何使用Air的File和FileStream类进行本地文件读写,以及Preferences API进行设置存储。 ...