- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我设法创建了一个 C# 服务器,它使用 sockets
将文件发送到 AS3(AIR) 客户端.在 AS3 方面,我使用的是 flash.net.Socket
库通过TCP
接收数据.
这是它的工作原理:
-> 我打开我的服务器,它会监听客户端(另外我可以创建一个已连接设备的列表);
-> 我打开我的客户端,它会自动接收数据;
接收数据的触发事件是在客户端上进行的,即,我只需打开服务器,当客户端打开时,它获取数据,触发这些事件:
socket.addEventListener(Event.CONNECT, onConnect); -> to connect to the server
socket.addEventListener(Event.SOCKET_DATA, onDataArrival); -> to receive the data
flash.net.ServerSocket
创建了我的 AS3 客户端/服务器应用程序,它可以像我想要的那样工作。图书馆。
serverSocket.bind(portNumber, "10.1.1.212");
serverSocket.addEventListener(ServerSocketConnectEvent.CONNECT, onConnectServer);
serverSocket.listen();
flash.net.Socket
接收数据
Event.SOCKET_DATA
flash.net.ServerSocket
与移动设备不兼容,但...
最佳答案
是的。您的客户端应该通过 flash.net.Socket
连接到服务器( doc ) 或 flash.net.XMLSocket
( doc )。在大多数情况下,您只需要一台可以连接多个客户端的服务器。不完全清楚为什么你在两端都有服务器?
编辑:
下面是一个客户端使用 Socket
持续监听来自服务器的消息的快速示例。 .这将连接到服务器,然后(无限期)等待数据。当接收到一大块数据时(在这种情况下,我期望字符串以换行符结尾),数据与事件一起传递。
如果您尝试过这种方法但没有成功,您应该查看是否有任何错误或连接是否已关闭。
文档类:
package {
import flash.display.Sprite;
public class Main extends Sprite {
protected var socket:SocketTest;
public function Main() {
this.socket = new SocketTest();
this.socket.addEventListener(SocketMessageEvent.MESSAGE_RECEIVED, onSocketMessage);
this.socket.connect("127.0.0.1", 7001);
}
protected function onSocketMessage(e:SocketMessageEvent):void {
var date:Date = new Date();
trace(date.hoursUTC + ":" + date.minutesUTC + ":" + date.secondsUTC + " Incoming message: " + e.message);
}
}
}
package {
import flash.net.Socket;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.SecurityErrorEvent;
import flash.events.ProgressEvent;
import flash.errors.IOError;
public class SocketTest extends Socket {
protected var _message:String;
public function SocketTest() {
super();
this._message = "";
this.addEventListener(Event.CONNECT, socketConnected);
this.addEventListener(Event.CLOSE, socketClosed);
this.addEventListener(ProgressEvent.SOCKET_DATA, socketData);
this.addEventListener(IOErrorEvent.IO_ERROR, socketError);
this.addEventListener(SecurityErrorEvent.SECURITY_ERROR, socketError);
}
protected function socketData(event:ProgressEvent):void {
var str:String = readUTFBytes(bytesAvailable);
//For this example, look for \n as a message terminator
var messageParts:Array = str.split("\n");
//There could be multiple messages or a partial message,
//pass on complete messages and buffer any partial
for (var i = 0; i < messageParts.length; i++) {
this._message += messageParts[i];
if (i < messageParts.length - 1) {
this.notifyMessage(this._message);
this._message = "";
}
}
}
protected function notifyMessage(value:String):void {
this.dispatchEvent(new SocketMessageEvent(SocketMessageEvent.MESSAGE_RECEIVED, value));
}
protected function socketConnected(event:Event):void {
trace("Socket connected");
}
protected function socketClosed(event:Event):void {
trace("Connection was closed");
//TODO: Reconnect if needed
}
protected function socketError(event:Event):void {
trace("An error occurred:", event);
}
}
}
package {
import flash.events.Event;
public class SocketMessageEvent extends Event {
public static const MESSAGE_RECEIVED:String = "messageReceived";
protected var _message:String;
public function SocketMessageEvent(type:String, message:String = "", bubbles:Boolean = false, cancelable:Boolean = false) {
super(type, bubbles, cancelable);
this._message = message;
}
public function get message():String {
return this._message;
}
}
}
Socket connected
21:36:24 Incoming message: Message from server: 0
21:36:29 Incoming message: Message from server: 1
21:36:34 Incoming message: Message from server: 2
21:36:39 Incoming message: Message from server: 3
21:36:44 Incoming message: Message from server: 4
21:36:49 Incoming message: Message from server: 5
关于actionscript-3 - 在不使用服务器套接字的情况下监听 AS3 (AIR) 客户端中的传入连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13949672/
我开发了一个 Adobe AIR 应用程序,用户可以从我的网页上安装和启动它。如果用户计算机上尚未安装 AIR 应用程序,我将使用安装标志来安装它。在我对应用程序进行签名之前,此安装仅在 AIR
是否可以让我的 AIR 应用程序能够将自己添加到启动程序列表中? (我想在多个平台上进行这项工作 - 即 Windows、Mac 和 Linux)我将如何去做? 最佳答案 if (NativeAppl
我希望能够从Adobe AIR应用程序中启动第三方进程(实际上是命令行进程)。 AIR应用程序在运行时是否存在安全上下文,可以防止这种情况发生? 最佳答案 Adobe AIR 最需要的两个功能是从 A
我希望使用 Adobe Air 来可视化来自串行端口的信息。有没有办法在 Air 中天真地做到这一点?我假设不是。 如果是这种情况,我的最佳途径是创建一个本地应用程序,通过 TCP/IP 连接使串
Adobe 应用支持多核还是仍然使用单核? 如果我使用的是 Pentium 4 处理器 (3 ghz) 与双核处理器 (2.7 ghz) 相比,速度(应用程序的性能)是否会有所不同 编辑:如 Andr
我需要为 mac 和 Windows 开发一个桌面应用程序,使用 HTML JqueryMobile 和 CSS,我只是想确认 Adobe air 是否完全免费用于开发,并且想知道任何 IDE 支
我正在尝试将网络摄像头的视频和音频录制到存储在用户本地硬盘上的 FLV 文件中。我有此代码的一个版本,它使用 NetConnection 和 NetStream 通过网络将视频流式传输到 FMS (R
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 提供事实和引用来回答它. 8年前关闭。 Improve this
我的问题是 如何防止用户关闭应用程序? .我需要出现一条警告消息,询问用户是否真的想离开应用程序。 我的应用程序是在 中开发的Adobe AIR .请帮忙,我有麻烦了。 最佳答案 是的,我也发现了这个
我一直使用自行生成的证书为我的 Adobe AIR 应用程序签名,但现在我想要看起来更正式的证书。我应该从哪里获得什么样的商业证书? 一如既往,感谢您的帮助! 最佳答案 经过一番寻找,我在 AIR
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 8年前关闭。 Improve this qu
Adobe Air 究竟是什么?我看到很多人在谈论它,我什至看到了它的应用程序,但我仍然不完全确定它的独特之处或它与其他语言的不同之处。有人可以从程序员的角度给我简明的版本吗? 编辑: 我不熟悉 Fl
我想显示位于我的 AIR 应用程序的 app-storage 目录中的图像。此图像必须显示在 html 文本区域中,其中 html 文本来自本地嵌入式 sqlite 数据库。 当我输入以下代码时: i
我刚开始学习 Adobe AIR。我想通过引用示例应用程序我会学得很快。您能告诉我任何 Adobe AIR 开源应用程序吗? 感谢您的帮助。 最佳答案 超过 20 个示例应用程序(来自 Ado
创建 adobe air 文件后,我可以使用 winrar 或任何其他存档程序打开它,并查看所有内容,包括我的程序的代码。 有办法避免这种情况吗?某种加密或其他什么? 非常感谢。 最佳答案 没有。 “
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我们的代码签名证书最近过期了。它已更新,但现在每当我尝试使用更新的证书打包应用程序(无论我是否尝试迁移过期的证书),安装后,每当我尝试运行应用程序时都会收到以下消息: “此应用程序的此安装已损坏。请尝
我遇到了这个问题,我需要一个简单的医疗设备来将一串逗号分隔的数字输出到我的 Adobe Air 应用程序。我很高兴能与 Web 服务以外的东西交谈! 所以,我得到了一个 USB 转串口适配器,插入
是否可以在不安装的情况下运行 Adobe AIR 应用程序? AIR 运行时已经安装,我们需要一个解决方案来控制应用程序的“安装”——所以我们需要的是运行一个 adobe air 应用程序,该应用
我们有一个 Adobe Air 应用程序,可以将大量图像下载到应用程序存储中。我扫描了文档并没有发现任何迹象,但我想我会仔细检查:任何人都知道是否有可能看到用户在他们的 HD 上有多少可用存储空间
我是一名优秀的程序员,十分优秀!