ActionScript3.0中引入的Socket类,使ActionScript可以建立套接字连接,并读取和写入原始二进制数据。在定义有关数据交换的操作方法时,ActionScript使用了两个接口:IDataInput接口和IDataOutput接口,分别定义数据的输入和输出。Socket类的设计实现了这两个接口,在实现方法时,关注二进制数据的输入和输出。因此,使用Socket类与服务器的二进制协议通讯非常轻易。
利用Socket类的构造函数创建Socket对象。Socket类的构造函数包含两个参数:
Socket(host:String=null,port:int=0)
Øhost:String(default=null)—要连接的主机的名称。若未指定此参数,将创建一个最初处于断开状态的套接字。
Øport:int(default=0)—要连接的端口号。若未指定此参数,将创建一个最初处于断开状态的套接字。
假如代码中提供了充足的参数,则可以成功的建立一个打开套接字连接。该构造函数在执行成功时,并不发送Event.COMPLETE事件,而是发送一个Event.CONNECT事件。远程网络连接的情况比较多变,应充分考虑响应连接的异步性,在代码中侦听Event.CONNECT事件,并在事件的侦听器中进行后续的操作。
代码中也可以使用connected属性查询Socket对象目前是否已连接。当连接建立时,connected属性为true。假如套接字没有连接,可以调用套接字对象的connect()方法,重建连接或者尝试使用新的地址和端口号。
Socket类使用二进制协议的服务器互操作,可以使FlashPlayer能够连接到邮件和新闻服务器,编写根据不同的Internet协议(例如POP3、SMTP、IMAP和NNTP)进行交互的代码。当服务器的服务可用,且套接字连接建立后,就可以向缓冲区中写入信息或者读取信息。缓冲区的数据需要双方配合操作。当服务器关闭连接时,FlashPlayer会接受到Event.CLOSE事件的通知。侦听这个事件,避免单方操作不存在的套接字连接。
1.读取缓冲区
读取是最常见的操作,究竟FlashPlayer经常是作为接受服务的一方,从远程索取数据。
在FlashPlayer中,可用的套接字读取操作很多,常见的有:
ØreadByte():从套接字读取一个带符号字节。
ØreadBytes(bytes:ByteArray,offset:uint=0,length:uint=0):从套接字读取length参数所指定的数据的字节数。
ØreadUTF():从套接字读取一个UTF-8字符串。
ØreadUTFBytes(length:uint):从套接字读取length参数所指定的UTF-8数据的字节数,并返回一个字符串。
ØreadObject():从以AMF序列化格式编码的套接字读取一个对象。该参数返回一个无类型类型。写入前可以进行压缩。
Socket类提供bytesAvailable参数,标记输入缓冲区中可读取的数据的字节数。这个参数是只读的。对套接字输出缓冲区中积累的所有数据进行刷新。
2.写入操作
对于客户端的FlashPlayer而言,写入套接字意味着向服务器端发送数据。write方法写入的数据不会被立即传送。
针对套接字的写操作主要有:
ØwriteByte(value:int):将一个字节写入套接字。
ØwriteBytes(bytes:ByteArray,offset:uint=0,length:uint=0):从指定的字节数组写入一系列字节。
ØwriteUTF(value:String):将参数指定的字符串写入缓冲。但实际上写入的信息要更多一些。以下数据写入套接字:一个无符号16位整数,它指示了指定UTF-8字符串的长度(以字节为单位),后面跟随字符串本身。
ØwriteObject(object:*):以AMF序列化格式将一个对象写入套接字。
ØwriteUTFBytes(value:String):将一个UTF-8字符串写入套接字。
这些数据在调用flush()方法之前一直被保存在队列中。使用flush()方法,对套接字输出缓冲区中积累的所有数据进行刷新。
当套接字使用完毕后,可以调用close()方法,关闭套接字连接关闭套接字。在调用close()方法时不会引发Event.CLOSE事件。
在调用close()方法之后,将无法读取或写入任何数据。但是套接字对象不会被删除。假如需要再次进行连接,不要重新建立套接字对象,只要直接对原有Socket对象调用connect()方法。
2Socket套接字类 套接字连接是一种持续的网络连接。一般的网络数据传递需要进行多次,每次之间是不连续的。但是套接字连接有助于避免频繁的询问用户连接。当套接字连接建立后,客户端和服务器之间就形成了一个临时的双向通道。服务器可以向客户端传送消息,类似于将数据包从服务器推向客户端,而无需客户端发出直接的请求。这是套接字连接最实用的部分。
套接字连接是一种基层的通信,但在ActionScript3.0中又分为两大类:二进制数据的套接字连接和XML数据的套接字连接。假如需要执行最基层的数据传输,可以使用ActionScript3.0的Sockect类,该类负责二进制数据的传输和读取。假如要进行格式化的文本数据传输,可以利用XML格式作为信息的格式,此时可以利用ActionScript的XMLSocket类。
分享到:
相关推荐
在计算机网络通信中,套接字(Socket)是一种编程接口,允许不同进程之间进行通信。 IPV4与IPV6兼容的套接字编程接口是指同时支持IPV4和IPV6两种网络协议的套接字编程接口。 套接字是一个端点,在两个程序之间的...
本篇文章将详细解析一个基于VB.NET实现的异步Socket网络TCP通信的例子,主要关注该通信类的设计思路、核心功能以及其实现细节。 #### 二、基础知识回顾 - **TCP/IP**:传输控制协议/因特网互联协议(Transmission ...
在AS3中,Socket类提供了与TCP套接字进行通信的能力。创建一个Socket对象,然后连接到服务器的特定端口,就可以开始读写数据。在这个小型聊天室中,客户端可能使用Socket类发送用户输入的消息到服务器,并监听来自...
Socket,通常被称为套接字,是网络通信中的一个抽象概念,它为进程间的通信提供了一个接口。在网络环境中,Socket允许两个应用程序通过Internet或局域网进行数据交换。Socket分为两种类型:流式Socket(TCP)和数据...
Private SocketStream As NetworkStream Private Writer As BinaryWriter Private Reader As BinaryReader Private Client As TcpClient Private clientName As String Public Event OnText(ByVal msg As ...
SMTP(Simple Mail Transfer Protocol)是互联网上用于发送电子邮件的标准协议,而套接字(Socket)编程则是实现网络通信的基础。在Python中,我们可以利用内置的`socket`库和`smtplib`库来实现SMTP客户端的功能,...
Flex中的Socket类是AS3的一部分,位于`flash.net`包中,它提供了建立和管理TCP套接字连接的能力。Socket类允许我们创建一个到服务器的连接,并通过这个连接发送和接收二进制或文本数据。 2. **连接服务器** 使用...
Socket是网络通信中的一个抽象层,它封装了底层的TCP/IP协议,提供了套接字接口。在VB.NET中,我们可以使用`System.Net.Sockets`命名空间下的`Socket`类来实现Socket通信。 为了创建一个支持多客户端连接的服务端,...
`request`属性是连接套接字,`client_address`包含客户端的IP地址和端口号。 客户端的实现相对简单,通常只需要创建一个socket对象,连接到服务器,发送数据并接收回应: ```python import socket def client_...
VB.NET Socket编程是一种在VB.NET环境下使用网络套接字(Socket)进行通信的技术。Socket是网络编程的基础,它允许应用程序通过Internet或局域网发送和接收数据。在VB.NET中,我们可以利用System.Net.Sockets命名...
D2HTTPSocket 扩展的 Flash 套接字实现了在 dota 2 UI 中使用的 HTTP 协议的基本版本。 重要的文件是 D2HTTPSocket.as,如何使用这个类的例子可以在 sockethttp.as 中找到。如何使用:输入首先导入类: import dota2...
在IT行业中,网络通信是至关重要的部分,而TCP Socket(传输控制协议套接字)是实现网络通信的基础。本文将详细讲解如何使用TCP Socket来实现一个文件的接收和发送功能,以便在一个系统中创建一个接收端,而在另一个...
Socket,通常称为套接字,是进程间通信的一种方式,它允许不同的进程(可能位于不同的机器上)通过网络进行数据交换。在TCP/IP协议栈中,Socket接口为应用程序提供了访问网络层服务的接口。 二、TCP与UDP 1. TCP...
Socket编程是AS3中提供的一种低级别网络通信接口,允许应用程序直接与服务器进行双向数据交换,类似于TCP/IP协议栈中的套接字接口。 在Flash Socket中,我们通常使用`flash.net.Socket`类来建立连接并进行数据交互...
AS3提供了Socket类,可以用来创建TCP/IP套接字连接,用于双向数据传输。当你需要发送或接收大量数据时,Socket是理想的选择。例如,`flower.fla`和`sendasp.fla`可能就是使用Socket与服务器进行通信的Flash项目。 ...
套接字连接 一个纯Swift包,用于建立到服务器的双向套接字连接,该服务器使用Combine(而不是委托)将数据和通知发送回您的代码。 这非常适合使用SwiftUI的现代应用程序,但也意味着它(当前)在Linux上不起作用。 ...
2. **创建套接字**:使用`WSASocketALib`或`socketLib`函数创建一个新的套接字。 3. **设置选项**:通过`ioctlsocketLib`或`WSAIoctlLib`函数设置套接字选项,以便于接收所有经过该套接字的数据包。 4. **绑定套接字...
在Python中,`socket`模块提供了低级别的套接字接口。创建一个Socket对象可以通过`socket.socket()`函数完成,指定传输层协议(TCP或UDP)和地址族(通常为AF_INET,表示IPv4): ```python import socket s = ...
ServerSocket是Java.net包下的一个类,它代表服务器端的一个监听套接字。当一个服务需要接受来自多个客户端的连接请求时,ServerSocket就会创建一个监听端口。服务器端程序通常会实例化一个ServerSocket对象,并指定...
在`Server`文件中,开发者可能使用了如`socket()`, `bind()`, `listen()`, 和 `accept()`等函数来创建并管理服务器套接字。一旦服务器监听到新的连接请求,`accept()`函数会返回一个新的套接字,用于与特定客户端...