AS3.0中使用Socket接收数据我们必须使用ProgressEvent.SOCKET_DATA事件。这个事件在帮助文档中是这样描述的 ——在套接字接收到数据后调度。
而事实却并非如此,做过一次尝试,服务器发送了20000次数据而rogressEvent.SOCKET_DATA事件只产生了2000多次。
那么为什么说"服务器发送了20000次数据而rogressEvent.SOCKET_DATA事件只产生了2000多次",
因为flash socket使用的TCP/IP协议, 这个协议跟UDP不同,它不是以单个"包"的形式发送数据,它发送的是"流数据",所以即便你发来20000次数据(也就是你所想象的20000个包),TCP协议也是将它视作"流"发送.
换句话说,你的20000次数据,实际上只被分割成了2000多个"包"来发送,因此socket收到了2000多个包,,因此只产生了2000多次的事件.
在局域网内,或者本机127.0.0.1(如果是internet的话,因为网络延迟,没法严格测试),
将服务器发"包"频率降低,,比如:10ms,或者20ms发送一次, 再试试发送2万个包,看看产生几次事件?
分享到:
相关推荐
`用于监听连接成功事件,`socket.addEventListener(ProgressEvent.SOCKET_DATA, onData);`用于监听接收到数据的事件。 4. **发送数据**:当连接建立后,你可以使用`writeUTFBytes()`或`writeBytes()`方法发送数据。...
4. **事件驱动**:AS3的Socket通信是基于事件驱动的,例如Socket事件(ConnectEvent.CONNECT、DataEvent.DATA、ProgressEvent.PROGRESS等),这些事件帮助开发者处理连接状态、数据接收和发送过程。 5. **异常处理*...
socket.addEventListener(ProgressEvent.SOCKET_DATA, onData); ``` 3. 使用Socket的`writeUTFBytes()`方法发送数据,`readUTF()`方法接收数据。 安全沙箱问题: Flash Player出于安全考虑,将内容分为不同的沙箱...
Flex中的Socket类是AS3的一部分,位于`flash.net`包中,它提供了建立和管理TCP套接字连接的能力。Socket类允许我们创建一个到服务器的连接,并通过这个连接发送和接收二进制或文本数据。 2. **连接服务器** 使用...
在AIR中,我们可以使用AS3的Socket类来创建和管理Socket连接。这个类提供了打开、读取、写入和关闭Socket连接的方法。 在建立AIR服务端时,我们需要创建一个监听特定端口的Socket服务器。首先,实例化一个Socket...
socket.addEventListener(ProgressEvent.SOCKET_DATA, onData); socket.addEventListener(IOErrorEvent.IO_ERROR, onError); socket.addEventListener(Event.CLOSE, onClose); ``` 接下来,我们编写处理这些事件的回...
socket.addEventListener(ProgressEvent.SOCKET_DATA, onData); socket.connect("localhost", 3306); ``` 在上述代码中,我们创建了一个XMLSocket实例,绑定了几个事件监听器,并尝试连接到本地主机的3306端口...
socket.addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler); } ``` 3. **处理接收到的数据:** 在 `socketDataHandler` 函数中,可以读取从客户端发送过来的数据,并对其进行解析。对于 ...
socket.addEventListener(flash.events.ProgressEvent.SOCKET_DATA, recieve); socket.addEventListener(flash.events.IOErrorEvent.IO_ERROR, ioerror); ``` - **连接服务器**:使用`connect`方法指定服务器...
socket.addEventListener(ProgressEvent.SOCKET_DATA, onData); socket.addEventListener(IOErrorEvent.IO_ERROR, onError); socket.addEventListener(Event.CLOSE, onClose); ``` 5. 跨域安全 由于Flash Player的...
socket.addEventListener(ProgressEvent.SOCKET_DATA, onData); socket.addEventListener(IOErrorEvent.IO_ERROR, onError); ``` 3. **构建HTTP请求**:在连接建立后,我们可以编写HTTP请求头并将其发送到服务器...
在`SocketExample`类的构造函数中,我们初始化一个`Socket`对象并添加两个事件监听器:一个用于处理连接建立(`Event.CONNECT`),另一个用于接收来自服务器的数据(`ProgressEvent.SOCKET_DATA`)。 当用户点击...
socket.addEventListener(ProgressEvent.SOCKET_DATA, onData); socket.connect("localhost", 8080); function onConnect(event:Event):void { trace("已连接"); socket.writeUTFBytes("你好,服务器!"); } ...
socket.addEventListener(ProgressEvent.SOCKET_DATA, onData); socket.connect("localhost", 8888); private function onConnect(event:Event):void { socket.writeUTFBytes("Hello from Flex!"); } ...
socket.addEventListener(ProgressEvent.SOCKET_DATA, onSocketData); function onConnect(event:Event):void { socket.writeUTFBytes("hello\0"); } function onClose(event:Event):void { trace("Connection ...
socket.addEventListener(ProgressEvent.SOCKET_DATA, dataHandler); private function dataHandler(event:ProgressEvent):void { var receivedData:String = socket.readUTF(); // 处理接收到的数据 } socket....
socket.addEventListener(ProgressEvent.SOCKET_DATA, onData); socket.addEventListener(IOErrorEvent.IO_ERROR, onError); socket.connect("localhost", 8888); private function onConnect(event:Event):...
4. `ProgressEvent.SOCKET_DATA` - 收到服务器发送的新数据时触发。 **单向通信流程** 在服务器端,我们通常需要处理客户端的连接请求,接收数据,然后断开连接。以下是一个简化的流程: 1. 使用`ServerSocket....
此外,通过监听ProgressEvent.SOCKET_DATA事件,游戏能够处理实时的socket数据,这表明在游戏开发中网络通信是实时且动态的。 7. 模块化设计:文档中提到了Login、Players和GameWindows等模块,以及ModuleManager,...
client.addEventListener(ProgressEvent.SOCKET_DATA, receiveData); } ``` 这里我们为连接成功和接收到数据这两个事件分别注册了事件处理函数 `sendData` 和 `receiveData`。 ### 3. 数据发送与接收 #### 3.1 ...