网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
05月21日漏签0天
actionscript吧 关注:1,330贴子:3,049
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 0回复贴,共1页
<<返回actionscript吧
>0< 加载中...

ActionScript 3.0 Socket TCP 联网程序通讯方法

  • 只看楼主
  • 收藏

  • 回复
  • 自在满愿
  • 上尉
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
.
创建一个 as3 文档 作为客户端
F9 动作面板代码如下
.
var isReadHead:Boolean;
var messageLen:int;
var socket:Socket = new Socket();
socket.addEventListener(Event.CONNECT, linkFn);
socket.addEventListener(ProgressEvent.SOCKET_DATA, dataFn);
socket.connect("127.0.0.1", 8888);
function linkFn(e:Event):void
{
trace(e);
.
trace("连上服务器");
trace("发送 aa bb 到服务器");
.
send({aa:66,bb:true});
}
function dataFn(e:ProgressEvent):void
{
read();
}
function read():void
{
if (! isReadHead && socket.bytesAvailable > 4)
{
var lenByte:ByteArray = new ByteArray();
socket.readBytes(lenByte, 0, 4);
messageLen = lenByte.readInt();
isReadHead = true;
}
if (isReadHead && socket.bytesAvailable >= messageLen)
{
var msgByte:ByteArray = new ByteArray();
socket.readBytes(msgByte, 0, messageLen);
isReadHead = false;
var json:String = msgByte.readUTFBytes(msgByte.length);
var oo:Object = JSON.parse(json);
.
trace("服务器传过来的数据");
trace(oo.aa,oo.bb);
.
if (socket.bytesAvailable > 4)
{
read();
}
}
}
function send(obj:Object):Boolean
{
if (socket.connected)
{
var json:String = JSON.stringify(obj);
var byte:ByteArray=new ByteArray();
byte.writeUTFBytes(json);
var msgByte:ByteArray = new ByteArray();
msgByte.writeInt(byte.length);
msgByte.writeBytes(byte, 0, byte.length);
socket.writeBytes(msgByte);
socket.flush();
return true;
}
else
{
return false;
}
}
.
创建一个 as3 air 项目 作为服务端
F9 动作面板代码如下
.
var clients:Vector.<Socket> = new Vector.<Socket>();
var server:ServerSocket = new ServerSocket();
server.bind(8888, "127.0.0.1");
server.addEventListener(ServerSocketConnectEvent.CONNECT, linkFn);
server.listen();
function linkFn(e:ServerSocketConnectEvent):void
{
var socket:Socket = e.socket;
clients.push(socket);
socket.addEventListener(ProgressEvent.SOCKET_DATA, dataFn);
socket.addEventListener(Event.CLOSE, closeFn);
}
function dataFn(e:ProgressEvent):void
{
var socket:Socket = e.currentTarget as Socket;
var byte:ByteArray = new ByteArray();
while (socket.bytesAvailable)
{
socket.readBytes(byte, 0, socket.bytesAvailable);
}
send(byte);
}
function send(byte:ByteArray):void
{
for each (var client:Socket in clients)
{
client.writeBytes(byte, 0, byte.length);
client.flush();
}
}
function closeFn(e:Event):void
{
var i:int;
while (i<clients.length)
{
if (clients[i] == e.currentTarget)
{
clients.splice(i,1);
}
i++;
}
e.currentTarget.removeEventListener(ProgressEvent.SOCKET_DATA, dataFn);
e.currentTarget.removeEventListener(Event.CLOSE, closeFn);
}
.
服务端 air 发布 .exe
先运行 服务端 exe
再运行客户端
.
效果如下
.

.
可以看到,获取到了服务器传过来的数据
.
as3 Socket 客户端 api
https://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/3/flash/net/Socket.html
.
as3 ServerSocket 服务器 api
https://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/3/flash/net/ServerSocket.html
.
参考
.
使用AS3 ServerSocket和Socket连接两个客户端
https://cloud.tencent.com/developer/ask/sof/101551645
.
AS3与JAVA、Netty Socket AMF通信 粘包处理
https://blog.csdn.net/weixin_34413065/article/details/91656830
.


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 0回复贴,共1页
<<返回actionscript吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示