`
friendsys
  • 浏览: 348251 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

使用Java与Flex建立Socket连接

阅读更多
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结尾发送数据
分享到:
评论
1 楼 310628570 2009-04-15  
good

相关推荐

    java+flex基于socket的聊天案例

    - `FlashSocket` 类:在Flex中,我们可以使用Flash的`flash.net.Socket`类来实现与Java Socket的通信。这个类提供了读写数据的方法,如`writeUTFBytes()` 和 `readUTF()`,可以方便地处理字符串数据。 3. 聊天室...

    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实现)。客户端负责用户交互和数据的发送,服务器负责接收数据、处理业务逻辑并广播消息到...

    Flex和java的socket通信

    通过上述的介绍和案例分析,我们已经了解到如何使用Flex和Java实现基本的Socket通信功能。这种技术不仅可以应用于简单的客户端-服务端通信场景,还可以扩展到更复杂的应用场景,如即时通讯系统等。希望本文能够帮助...

    flex与java通信

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

    flex+java的socket通信

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

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

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

    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与java通讯,URL,HTTPService,Socket

    在Flex端,使用Socket类建立连接并发送/接收数据。 以下是一些关于使用这些通信方式的要点: 1. 安全性:HTTPService通常在HTTPS下运行,提供加密的数据传输,而Socket通信默认是明文传输,可能需要额外的安全措施...

Global site tag (gtag.js) - Google Analytics