`
兩ting
  • 浏览: 78366 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

Java与Flex建立Socket连接

    博客分类:
  • flex
阅读更多

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连接,并且进行数据交互 

Java代码  收藏代码
  1. package socket;  
  2.   
  3. import java.io.*;  
  4. import java.net.*;  
  5. import java.util.Scanner;  
  6.   
  7. public class SocketService {  
  8.     public static void main(String[] args) {  
  9.         try {  
  10.             System.out.println("启动ServerSocket..");  
  11.             int i=1;  
  12.             ServerSocket s=new ServerSocket(8189);  
  13.             while (true) {  
  14.                 Socket incoming=s.accept();  
  15.                 System.out.println("新用户"+i);  
  16.                 Runnable r=new ThreadEcho(incoming);  
  17.                 Thread t=new Thread(r);  
  18.                 t.start();  
  19.                 i++;  
  20.             }  
  21.         } catch (Exception e) {  
  22.             e.printStackTrace();  
  23.         }  
  24.     }  
  25. }  
  26. class ThreadEcho implements Runnable  
  27. {  
  28.     private Socket incoming;  
  29.     public ThreadEcho(Socket s)  
  30.     {  
  31.         incoming=s;  
  32.     }  
  33.     public void run() {  
  34.         try {  
  35.             InputStream i=incoming.getInputStream();  
  36.             OutputStream o=incoming.getOutputStream();  
  37.             Scanner s=new Scanner(i);  
  38.             PrintWriter p=new PrintWriter(o);  
  39.             boolean done=false;  
  40.             while(!done && s.hasNext())  
  41.             {  
  42.                 String line=s.nextLine();  
  43.                 p.println("Echo"+line+"\n");  
  44.                 p.flush();  
  45.                 System.out.println("MSG"+line);  
  46.                 if(line.trim().equals("bye"))  
  47.                 {  
  48.                     done=true;  
  49.                 }  
  50.             }  
  51.             System.out.println("用户退出");  
  52.         } catch (Exception e) {  
  53.             e.printStackTrace();  
  54.         }finally  
  55.         {  
  56.             try {  
  57.                 incoming.close();  
  58.             } catch (IOException e) {  
  59.                 e.printStackTrace();  
  60.             }  
  61.         }  
  62.     }  
  63.       
  64. }  



Actionscript代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" >  
  3. <mx:Script>  
  4.     <![CDATA[  
  5.     private var sock:Socket;  
  6.         private function connSocket():void  
  7.         {  
  8.             sock=new Socket();  
  9.             sock.addEventListener(Event.CONNECT,onConnect)  
  10.             sock.addEventListener(ProgressEvent.SOCKET_DATA,MSGHandler)  
  11.             sock.connect(adds.text,int(post.text));  
  12.         }  
  13.         private function onConnect(evt:Event):void  
  14.         {  
  15.             trace("Connection sucess");  
  16.         }  
  17.         private function sendMSG():void  
  18.         {  
  19.             sock.writeUTFBytes(mess.text+"\n");  
  20.             sock.flush();  
  21.             trace('send msg'+mess.text);  
  22.         }  
  23.         /**消息获取函数*/  
  24.         private function MSGHandler(event:ProgressEvent):void  
  25.         {  
  26.             trace("GetMSG"+sock.readUTFBytes(sock.bytesAvailable));  
  27.         }  
  28.     ]]>  
  29. </mx:Script>  
  30. <mx:Button label="连接服务器" click="connSocket()"/>  
  31. <mx:TextInput text="127.0.0.1" x="100" width="200" id="adds"/>  
  32. <mx:TextInput text="8189" x="300" id="post"/>  
  33. <mx:Button label="发送数据" click="sendMSG()" y="40"/>  
  34. <mx:TextInput id="mess" x="100" y="40"/>  
  35. </mx:Application>  



注意:需要使用手动的\n结尾发送数据

分享到:
评论

相关推荐

    java+flex基于socket的聊天案例

    Java在后台处理业务逻辑和网络通信,它提供了Socket类,使得应用程序可以直接通过TCP/IP协议与远程主机建立连接。Socket通信是一种点对点的连接方式,适用于需要低延迟、高可靠性的实时数据交换,如在线聊天系统。 ...

    flex的socket客户端连接java多线程socket服务端demo

    在Flex中,我们可以使用`flash.net.Socket`类来创建和管理Socket连接。这个类提供了打开、关闭连接,以及发送和接收数据的方法。 Java的Socket服务端则利用了Java的`java.net.ServerSocket`和`java.net.Socket`类。...

    flex java socket 文字聊天

    通过建立Socket连接,客户端(Flex应用)可以向服务器发送数据,并接收服务器返回的数据。在这个案例中,Flex应用作为Socket客户端,连接到Java Socket服务器,实现文字聊天功能。 Java的Socket API是用于网络编程...

    Flex与Java Socket通信

    Flex与Java Socket通信是Web应用程序开发中的一个重要技术,它允许客户端和服务器之间进行实时、双向的数据交换。在本文中,我们将深入探讨如何实现Flex客户端与Java服务器之间的Socket通信。 首先,确保你拥有以下...

    flex与java采用socket方式通信

    通过上述知识点,我们可以了解到如何在Flex和Java之间建立Socket通信,以及在实际开发中需要注意的一些技术和策略。这种通信方式广泛应用于实时聊天应用、在线游戏、股票交易系统等对数据实时性要求较高的场景。

    flex与socket之间的通信

    当需要与服务器进行实时通信时,Flex应用会使用Socket类来建立TCP/IP连接。Socket类允许客户端和服务器之间建立双向通信通道,使得数据可以双向传输。 在线聊天功能的核心在于实现实时的消息传递。在Flex客户端,你...

    flex Socket 通信

    考虑到网络通信的安全性,可能需要在Socket连接上使用SSL/TLS加密,这可以通过Flex的SecureSocket组件和Java的SSLSocket实现。此外,合理管理Socket连接池,避免过多的并发连接,可以提升系统性能。 6. **实时性...

    FLEX与JAVA通过SOCKET通信

    在Flex与Java的场景中,Flex作为客户端,Java作为服务器端,它们通过建立Socket连接来交换数据。 首先,让我们详细讲解一下Flex中的Socket通信。在Flex中,你可以使用`flash.net.Socket`类来创建Socket对象,连接到...

    flex socket开发总结

    Flex SDK提供了一个名为`flash.net.Socket`的类,它允许我们创建客户端Socket连接,以便与服务器进行双向通信。通过这个API,我们可以读取和写入字节数据,实现低级别的网络通信。 2. 连接服务器 创建Socket对象后...

    Flex和java socket聊天源码

    5. 客户端-服务器架构:这个聊天系统采用经典的客户端-服务器架构,客户端(由Flex构建)通过Socket连接到服务器(由Java实现)。客户端负责用户交互和数据的发送,服务器负责接收数据、处理业务逻辑并广播消息到...

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

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

    Flex和java的socket通信

    ### Flex和Java的Socket通信详解 #### 一、引言 在互联网应用开发中,不同技术栈之间的通信是非常重要的一个环节。本篇文章将详细介绍如何利用...希望本文能够帮助您更好地理解和掌握Flex与Java的Socket通信技术。

    flex+java的socket通信

    前端利用 Flex 实现与用户的交互,并通过 Socket 连接到后端 Java 服务。后端 Java 服务端通过 Socket API 监听连接请求,并处理客户端发送的数据。这种方式可以实现高效的数据传输,适用于需要实时通信的应用场景,...

    flex与java通信

    2. **Flex客户端**:在Flex客户端,我们可以使用`Flash.net.Socket`类来创建和管理Socket连接。通过监听`connect`、`data`、`error`和`close`事件,我们可以实现与Java服务器的通信。 3. **Java服务器端**:在Java...

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

    - BlazeDS或LiveCycle Data Services:Adobe提供的中间件,允许Flex应用程序与Java或.NET服务进行数据交换,包括Socket通信。 2. **C#服务端开发**: - `System.Net.Sockets.Socket`类:用于创建和管理Socket连接...

    Flex 利用socket断点续传

    2. Java服务器端代码:处理Socket连接,接收客户端的文件状态信息,返回剩余文件数据。 3. 可能还包含配置文件,如XML或properties文件,用于设置Socket连接参数、服务器地址等。 为了确保程序的稳定性和性能,...

    flex socket解决安全沙漏

    在尝试与远程服务器建立Socket连接时,如果不在跨域策略文件(crossdomain.xml)的允许范围内,Flash Player会阻止这种行为,这就是所谓的“安全沙漏问题”。 解决安全沙漏问题通常需要以下步骤: 1. **配置服务器...

    Flex_AS3与Java的Socket通信

    首先,让我们看看如何在Flex AS3中设置Socket连接。在提供的代码片段中,我们创建了一个名为`SocketExample`的类,它是`Sprite`类的子类,这在Flex中是一个基本的可视化容器。在`SocketExample`类的构造函数中,我们...

    Flex Soket与Java通讯

    在Flex和Java之间建立Socket通讯时,首先我们需要理解Flex如何使用Socket API。在Flex中,`flash.net.Socket` 类是实现Socket通信的核心。这个类提供了打开、关闭、读取和写入Socket连接的方法。例如,你可以使用`...

Global site tag (gtag.js) - Google Analytics