Java与Flex建立Socket连接
来源:互联网 发布:node rss 编辑:程序博客网 时间:2024/05/04 05:04
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代码:
- 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();
- }
- }
- }
- }
Actionscript代码:
- <?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结尾发送数据
原文链接:http://www.software8.co/webqd/flex/3022.html
- Java与Flex建立Socket连接
- 使用Java与Flex建立Socket连接(已解决沙箱问题)
- java socket与 flex 通信
- Flex Socket与java通信
- flex socket与Java通信
- Flex与C++ Socket短连接示例
- Android 与pc建立socket连接
- socket中TCP建立连接与释放连接
- FLEX利用Socket与java进行通信
- flex与JAVA的SOCKET通信
- socket 连接建立图
- socket 连接的建立
- 预览文章: Flex与.NET基于Socket的网络连接
- Flex与.NET基于Socket的网络连接
- socket 建立连接与三次握手的对应关系
- JAVA+FLEX与SAP RFC连接
- 从jedis的TCP连接建立来学习Java Socket
- Rsession让Java与R建立连接
- Hadoop on Windows
- 织梦(dedecms)仿站教程第二十五讲——内容页(一)
- 函数指针的经典应用
- 为什么favicon.ico在360浏览器下不显示?
- 点击超链接不跳转,不刷新页面
- Java与Flex建立Socket连接
- java的volatile与多线程
- [Java] 读取文件方法大全
- 百度优化,自然为佳
- 获取unix/linux系统命令的源码
- 阿里云 云服务器试用小记
- 一个外贸人转型为站长的痛
- Activity intent经常使用的 FLAG 集合
- 多触点放大缩小的画廊(MutiTouchGallery)