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结尾发送数据
分享到:
相关推荐
- `FlashSocket` 类:在Flex中,我们可以使用Flash的`flash.net.Socket`类来实现与Java Socket的通信。这个类提供了读写数据的方法,如`writeUTFBytes()` 和 `readUTF()`,可以方便地处理字符串数据。 3. 聊天室...
在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实现)。客户端负责用户交互和数据的发送,服务器负责接收数据、处理业务逻辑并广播消息到...
通过上述的介绍和案例分析,我们已经了解到如何使用Flex和Java实现基本的Socket通信功能。这种技术不仅可以应用于简单的客户端-服务端通信场景,还可以扩展到更复杂的应用场景,如即时通讯系统等。希望本文能够帮助...
2. **Flex客户端**:在Flex客户端,我们可以使用`Flash.net.Socket`类来创建和管理Socket连接。通过监听`connect`、`data`、`error`和`close`事件,我们可以实现与Java服务器的通信。 3. **Java服务器端**:在Java...
前端利用 Flex 实现与用户的交互,并通过 Socket 连接到后端 Java 服务。后端 Java 服务端通过 Socket API 监听连接请求,并处理客户端发送的数据。这种方式可以实现高效的数据传输,适用于需要实时通信的应用场景,...
Java与Flex之间的通信是通过Socket连接实现的,它们之间发送的是二进制或文本格式的数据,通常采用JSON或自定义协议来封装消息,以便于解码和处理。这样的设计使得聊天系统的响应速度和效率得到了保证。 总的来说,...
- 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端,使用Socket类建立连接并发送/接收数据。 以下是一些关于使用这些通信方式的要点: 1. 安全性:HTTPService通常在HTTPS下运行,提供加密的数据传输,而Socket通信默认是明文传输,可能需要额外的安全措施...