package com.controls.socket
{
import flash.events.DatagramSocketDataEvent;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.net.DatagramSocket;
import flash.utils.ByteArray; /**
* @author: Frost.Yen
* @E-mail: 871979853@qq.com
* @create: 2017-11-25 下午2:55:53
*
*/
public class DatagramSocketManager extends EventDispatcher
{
private var _datagramSocket:DatagramSocket = new DatagramSocket();
private static var _instance:DatagramSocketManager;
public var data:String;
public function DatagramSocketManager(s:S)
{
}
public static function getInstance():DatagramSocketManager
{
if(!_instance){
_instance = new DatagramSocketManager(new S());
}
return _instance;
} public function send(msg:Object,address:String,port:int):void{
//Create a message in a ByteArray
var data:ByteArray = new ByteArray(); if(msg is String){
data.writeUTFBytes( msg as String );
}else{
data.writeUTFBytes( JSON.stringify(msg) );
}
//Send a datagram to the target
try
{
_datagramSocket.send( data, 0, 0, address, port);
log( "Sent message to " + address + ":" +port); }
catch ( error:Error )
{
log( error.message );
}
} public function bind(port:int,ip:String):void
{
if( _datagramSocket.bound )
{
_datagramSocket.close();
_datagramSocket = new DatagramSocket(); }
_datagramSocket.bind(port, ip );
_datagramSocket.addEventListener( DatagramSocketDataEvent.DATA, dataReceived );
_datagramSocket.receive();
log( "Bound to: " + _datagramSocket.localAddress + ":" + _datagramSocket.localPort );
}
private function dataReceived( event:DatagramSocketDataEvent ):void
{
//Read the data from the datagram
data = event.data.readUTFBytes( event.data.bytesAvailable ) ;
log("Received from " + event.srcAddress + ":" + event.srcPort + "> " + data); this.dispatchEvent(new Event(Event.CHANGE));
} public function log(message:String):void
{
trace(message);
}
}
}
class S{};

用法:

DatagramSocketManager.getInstance().bind(8090,"127.0.0.1");
DatagramSocketManager.getInstance().addEventListener(Event.CHANGE,onGetUDPMsg); private function onGetUDPMsg(e:Event):void{
trace("接收到服务器发送过来的消息",DatagramSocketManager.getInstance().data);
try
{
var data:Object = JSON.parse(DatagramSocketManager.getInstance().data);
}
catch(error:Error)
{ }
}

[ActionScript 3.0] UDP通信的更多相关文章

  1. Python的网络编程[0] -> socket[2] -> 利用 socket 建立 TCP/UDP 通信

    Socket 目录 socket 的 TCP/IP 通信基本建立过程 socket 的 UDP 通信基本建立过程 socket 的 UDP 广播式通信基本建立过程 socket 的多线程通信建立过程 ...

  2. 高性能 TCP & UDP 通信框架 HP-Socket v3.5.3

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

  3. 高性能 TCP & UDP 通信框架 HP-Socket v3.5.2

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

  4. 高性能 TCP & UDP 通信框架 HP-Socket v3.5.1

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

  5. 高性能 TCP & UDP 通信框架 HP-Socket v3.3.1

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

  6. .Net开发笔记(十四) 基于“泵”的UDP通信(接上篇)

    上一篇中说到了“泵”在编程中的作用以及一些具体用处,但没有实际demo,可能不好理解,这篇文章我分享一个UDP通信的demo,大概实现了类似“飞鸽传书”在局域网中文本消息和文件传输的功能.功能不全也不 ...

  7. 高性能 TCP & UDP 通信框架 HP-Socket v3.2.3

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

  8. 高性能 TCP & UDP 通信框架 HP-Socket v3.2.2 正式发布

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

  9. [C语言]一个很实用的服务端和客户端进行UDP通信的实例

    前段时间发了个TCP通信的例子,现在再来一个UDP通信的例子.这些可以作为样本程序,用到开发中.“裸写”socket老是记不住步骤,经常被鄙视…… 下面的例子很简单,写一个UDP的server用于收包 ...

随机推荐

  1. 2018.07.06 POJ1273 Drainage Ditches(最大流)

    Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Description Every time it rains on Farmer J ...

  2. MySQL终端下常用命令

    一:控制类命令 1.show variables like "%datadir%";显示注册在variables中(一个注册表key-value的格式存储数据)key能匹配%dat ...

  3. java @option之args4j

    args4j简介 args4j是一个用来配置命令行的工具. 在实际的项目中用到命令行的并不是很常见,但当真正使用到时,特别是在程序启动时配置一下参数的时候就很有用了,如果参数很多的话,一个一个解析命令 ...

  4. 20155209 2016-2017-2 《Java程序设计》第八周学习总结

    20155209 2016-2017-2 <Java程序设计>第八周学习总结 教材学习内容总结 Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从J ...

  5. 安装及使用Eclipse Maven插件的经验

    Eclipse Maven插件的站点目前已经迁移到了Eclipse主站上:http://eclipse.org/m2e/ 其安装方法也非常简单,通过Eclipse访问下面的URL:http://dow ...

  6. UniGui之锱铢积累(仔细看这个文件)

    http://www.doc88.com/p-4022977294324.html 这个是Word文档

  7. Activity-fragment-ListView展示

    在上一篇博客,Android-fragment简介-fragment的简单使用,介绍了简单的使用: 这篇博客主要讲解,在fragment做处理事情(Activity的事情) Activity pack ...

  8. Android-BitmapUtil工具类

    Bitmap工具类,获取Bitmap对象 public class BitmapUtil { private BitmapUtil(){} /** * 根据资源id获取指定大小的Bitmap对象 * ...

  9. [CentOS]Centos设置PATH全局变量

    PATH确认方法 $ echo $PATH 根据优先级先后顺序用:分割,因此可以复数指定 PATH设定方法(临时) $ export PATH=$PATH:/usr/local/scala/bin P ...

  10. 微信公众平台如何与Web App结合?

    Web App简而言之就是为移动平台而优化的网页,它可以表现得和原生应用一样,并且克服了原生应用一些固有的缺点.一般而言Web App最大的入口是浏览器,但现在微信公众平台作为新兴的平台,结合其内置浏 ...