Socket与其他的通信技术最大的不同是Socket连接在数据传输完成后不会自动关闭,因此服务器可以在任何时间主动发送数据给客户端.
Flex下Socket连接的方式有Socket和XMLSocket两种.
读取数据使用的是异步的方式,需要监听对应的事件
socket.addEventListener( ProgressEvent.SOCKET_DATA, onSocketData );
xmlSocket.addEventListener( DataEvent.DATA, onData );
写入数据的方式
socket下比较常用的是writeUTFBytes(String),writeMultiByte()可以自定义编码,
使用flush()发送数据
xmlScoket下 .send(String)
连接Socket的方式
socket.connect( "localhost", 2900 ); //代表地址和端口
如果要跨域连接服务器,需要加载策略文件
Security.loadPolicyFile("url/crossdomain.xml");
例子使用Java建立Socket服务器,然后使用Flex连接,并且进行数据交互
- package socket;
- import java.io.*;
- import java.net.*;
- import java.util.Scanner;
- public class SocketService {
- public static void main(String[] args) {
- try {
- System.out.println("启动ServerSocket..");
- int i=1;
- ServerSocket s=new ServerSocket(8189);
- while (true) {
- Socket incoming=s.accept();
- System.out.println("新用户"+i);
- Runnable r=new ThreadEcho(incoming);
- Thread t=new Thread(r);
- t.start();
- i++;
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- class ThreadEcho implements Runnable
- {
- private Socket incoming;
- public ThreadEcho(Socket s)
- {
- incoming=s;
- }
- public void run() {
- try {
- InputStream i=incoming.getInputStream();
- OutputStream o=incoming.getOutputStream();
- Scanner s=new Scanner(i);
- PrintWriter p=new PrintWriter(o);
- boolean done=false;
- while(!done && s.hasNext())
- {
- String line=s.nextLine();
- p.println("Echo"+line+"\n");
- p.flush();
- System.out.println("MSG"+line);
- if(line.trim().equals("bye"))
- {
- done=true;
- }
- }
- System.out.println("用户退出");
- } catch (Exception e) {
- e.printStackTrace();
- }finally
- {
- try {
- incoming.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" >
- <mx:Script>
- <![CDATA[
- private var sock:Socket;
- private function connSocket():void
- {
- sock=new Socket();
- sock.addEventListener(Event.CONNECT,onConnect)
- sock.addEventListener(ProgressEvent.SOCKET_DATA,MSGHandler)
- sock.connect(adds.text,int(post.text));
- }
- private function onConnect(evt:Event):void
- {
- trace("Connection sucess");
- }
- private function sendMSG():void
- {
- sock.writeUTFBytes(mess.text+"\n");
- sock.flush();
- trace('send msg'+mess.text);
- }
- /**消息获取函数*/
- private function MSGHandler(event:ProgressEvent):void
- {
- trace("GetMSG"+sock.readUTFBytes(sock.bytesAvailable));
- }
- ]]>
- </mx:Script>
- <mx:Button label="连接服务器" click="connSocket()"/>
- <mx:TextInput text="127.0.0.1" x="100" width="200" id="adds"/>
- <mx:TextInput text="8189" x="300" id="post"/>
- <mx:Button label="发送数据" click="sendMSG()" y="40"/>
- <mx:TextInput id="mess" x="100" y="40"/>
- </mx:Application>
注意:需要使用手动的\n结尾发送数据
相关推荐
Java在后台处理业务逻辑和网络通信,它提供了Socket类,使得应用程序可以直接通过TCP/IP协议与远程主机建立连接。Socket通信是一种点对点的连接方式,适用于需要低延迟、高可靠性的实时数据交换,如在线聊天系统。 ...
在Flex中,我们可以使用`flash.net.Socket`类来创建和管理Socket连接。这个类提供了打开、关闭连接,以及发送和接收数据的方法。 Java的Socket服务端则利用了Java的`java.net.ServerSocket`和`java.net.Socket`类。...
通过建立Socket连接,客户端(Flex应用)可以向服务器发送数据,并接收服务器返回的数据。在这个案例中,Flex应用作为Socket客户端,连接到Java Socket服务器,实现文字聊天功能。 Java的Socket API是用于网络编程...
Flex与Java Socket通信是Web应用程序开发中的一个重要技术,它允许客户端和服务器之间进行实时、双向的数据交换。在本文中,我们将深入探讨如何实现Flex客户端与Java服务器之间的Socket通信。 首先,确保你拥有以下...
通过上述知识点,我们可以了解到如何在Flex和Java之间建立Socket通信,以及在实际开发中需要注意的一些技术和策略。这种通信方式广泛应用于实时聊天应用、在线游戏、股票交易系统等对数据实时性要求较高的场景。
当需要与服务器进行实时通信时,Flex应用会使用Socket类来建立TCP/IP连接。Socket类允许客户端和服务器之间建立双向通信通道,使得数据可以双向传输。 在线聊天功能的核心在于实现实时的消息传递。在Flex客户端,你...
考虑到网络通信的安全性,可能需要在Socket连接上使用SSL/TLS加密,这可以通过Flex的SecureSocket组件和Java的SSLSocket实现。此外,合理管理Socket连接池,避免过多的并发连接,可以提升系统性能。 6. **实时性...
在Flex与Java的场景中,Flex作为客户端,Java作为服务器端,它们通过建立Socket连接来交换数据。 首先,让我们详细讲解一下Flex中的Socket通信。在Flex中,你可以使用`flash.net.Socket`类来创建Socket对象,连接到...
Flex SDK提供了一个名为`flash.net.Socket`的类,它允许我们创建客户端Socket连接,以便与服务器进行双向通信。通过这个API,我们可以读取和写入字节数据,实现低级别的网络通信。 2. 连接服务器 创建Socket对象后...
5. 客户端-服务器架构:这个聊天系统采用经典的客户端-服务器架构,客户端(由Flex构建)通过Socket连接到服务器(由Java实现)。客户端负责用户交互和数据的发送,服务器负责接收数据、处理业务逻辑并广播消息到...
Java与Flex之间的通信是通过Socket连接实现的,它们之间发送的是二进制或文本格式的数据,通常采用JSON或自定义协议来封装消息,以便于解码和处理。这样的设计使得聊天系统的响应速度和效率得到了保证。 总的来说,...
### Flex和Java的Socket通信详解 #### 一、引言 在互联网应用开发中,不同技术栈之间的通信是非常重要的一个环节。本篇文章将详细介绍如何利用...希望本文能够帮助您更好地理解和掌握Flex与Java的Socket通信技术。
前端利用 Flex 实现与用户的交互,并通过 Socket 连接到后端 Java 服务。后端 Java 服务端通过 Socket API 监听连接请求,并处理客户端发送的数据。这种方式可以实现高效的数据传输,适用于需要实时通信的应用场景,...
2. **Flex客户端**:在Flex客户端,我们可以使用`Flash.net.Socket`类来创建和管理Socket连接。通过监听`connect`、`data`、`error`和`close`事件,我们可以实现与Java服务器的通信。 3. **Java服务器端**:在Java...
- BlazeDS或LiveCycle Data Services:Adobe提供的中间件,允许Flex应用程序与Java或.NET服务进行数据交换,包括Socket通信。 2. **C#服务端开发**: - `System.Net.Sockets.Socket`类:用于创建和管理Socket连接...
2. Java服务器端代码:处理Socket连接,接收客户端的文件状态信息,返回剩余文件数据。 3. 可能还包含配置文件,如XML或properties文件,用于设置Socket连接参数、服务器地址等。 为了确保程序的稳定性和性能,...
在尝试与远程服务器建立Socket连接时,如果不在跨域策略文件(crossdomain.xml)的允许范围内,Flash Player会阻止这种行为,这就是所谓的“安全沙漏问题”。 解决安全沙漏问题通常需要以下步骤: 1. **配置服务器...
首先,让我们看看如何在Flex AS3中设置Socket连接。在提供的代码片段中,我们创建了一个名为`SocketExample`的类,它是`Sprite`类的子类,这在Flex中是一个基本的可视化容器。在`SocketExample`类的构造函数中,我们...
在Flex和Java之间建立Socket通讯时,首先我们需要理解Flex如何使用Socket API。在Flex中,`flash.net.Socket` 类是实现Socket通信的核心。这个类提供了打开、关闭、读取和写入Socket连接的方法。例如,你可以使用`...