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. 开发中常遇到的Python陷阱和注意点-乾颐堂

    最近使用Python的过程中遇到了一些坑,例如用datetime.datetime.now()这个可变对象作为函数的默认参数,模块循环依赖等等. 在此记录一下,方便以后查询和补充. 避免可变对象作为默 ...

  2. Laravel Tinker 使用笔记

    我们知道,Laravel Tinker 提供了命令行式的交互调试途径.使用极其方便直观. 使用: #php artisan tinker 要点: 命令要在一行上输入完成,回车执行.>>&g ...

  3. Storm 系列(二)实时平台介绍

    Storm 系列(二)实时平台介绍 本章中的实时平台是指针对大数据进行实时分析的一整套系统,包括数据的收集.处理.存储等.一般而言,大数据有 4 个特点: Volumn(大量). Velocity(高 ...

  4. 属性表格 datagridproperty

    http://www.cnblogs.com/yxlblogs/p/3468921.html

  5. Netty学习第二节Java IO通信

    一.Java IO通信 名词解释: BIO通信:       采用BIO通信模型的服务端,通常由一个独立的Acceptor线程负责监听客户端连接,在接收到客户端请求后,为每一个客户端建立一个新的线程负 ...

  6. java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing,

    缺少一个java包,然后我在这个网址找到了http://central.maven.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1. ...

  7. 配置 struts2 时掉进 web.xml 的坑

    这个声明不好用 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN&quo ...

  8. web.xml 404 500 配置

    web.xml <error-page> <error-code>404</error-code> <location>/error404.html&l ...

  9. 信息管理代码分析<二>读取二进制文件数据

    first和end做为全局变量,分别指向链表的头和尾.建立链表的方式也比较简易,从二进制文件数据块中,依次从头到尾读取,每读取一个就建立一个结点. /*基本模型*/ EMP *emp1; while( ...

  10. 笔记:PS 智能对象

    什么是智能对象? 智能对象是包含栅格或矢量图像(如 Photoshop 或 Illustrator 文件)中的图像数据的图层.智能对象将保留图像的源内容及其所有原始特性,从而让您能够对图层执行非破坏性 ...