| Pacote | flash.net |
| Classe | public class ServerSocket |
| Herança | ServerSocket EventDispatcher Object |
| Versão da linguagem: | ActionScript 3.0 |
| Versões de runtime: | AIR 2 |
Suporte para perfil AIR: este recurso é suportado em todos os sistemas operacionais para desktop, no iOS (iniciando com o AIR 3.8) e no Android (iniciando com o AIR 3.8). Esse recurso não é compatível no AIR em aparelhos de TV. Você pode testar o suporte que em tempo de execução utilizando a propriedadeServerSocket.isSupported. Consulte Suporte a perfil do AIR para obter mais informações sobre o suporte de API através de múltiplos perfis.
Um servidor TCP escuta conexões de entrada de clientes remotos. Quando um cliente tenta se conectar, o ServerSocket despacha o evento connect. O objeto de ServerSocketConnectEvent despachado para o evento fornece um objeto Socket que representa a conexão TCP entre o servidor e o cliente. Use este objeto Socket para toda comunicação subsequente com o cliente conectado. Você poderá obter o endereço e a porta do cliente do objeto Socket, se necessário.
Observação: O seu aplicativo é responsável por manter uma referência ao objeto Socket cliente. Se você não fizer, o objeto se encarregará da coleta de lixo e poderá ser eliminado pelo tempo de execução sem aviso.
Para colocar um objeto de ServerSocket no estado de escuta, chame o método listen(). No estado de escuta, o objeto socket de servidor despacha eventos connect sempre que um cliente que usa o protocolo TCP tenta se conectar ao endereço e porta vinculados. O objeto ServerSocket continua a escutar conexões adicionais até que você chame o método close().
As conexões de TCP são persistentes — elas existem até que um lado da conexão a feche (ou até que ocorra uma falha de rede grave). Quaisquer dados despachados na conexão são particionados em pacotes transmissíveis e reagrupado na outra extremidade. Garante-se que todos os pacotes cheguem (de forma razoável) — qualquer pacote perdido é retransmitido. Em geral, o protocolo TCP gerencia a largura de banda de rede disponível melhor do que o protocolo UDP. A maior parte dos aplicativos AIR que requerem comunicações de soquete devem usar as classes Socket e ServerSocket em vez da classe DatagramSocket.
A classe ServerSocket pode ser usada apenas em aplicativos Adobe AIR e somente na área de segurança de aplicativo.
Para obter mais informações relacionadas à segurança, consulte o tópico do Centro dos desenvolvedores do Flash Player Security.
Elementos da API relacionados
| Propriedade | Definido por | ||
|---|---|---|---|
| bound : Boolean [somente leitura]
Indica se o soquete é vinculado à uma porta e a um endereço local. | ServerSocket | ||
![]() | constructor : Object
Uma referência ao objeto de classe ou à função de construtor de uma determinada ocorrência de objeto. | Object | |
| isSupported : Boolean [estático] [somente leitura]
Indica se os recursos de ServerSocket são suportados no meio de tempo de execução. | ServerSocket | ||
| listening : Boolean [somente leitura]
Indica se o soquete de servidor está escutando conexões de entrada. | ServerSocket | ||
| localAddress : String [somente leitura]
O endereço IP no qual o soquete está escutando. | ServerSocket | ||
| localPort : int [somente leitura]
A porta na qual o soquete está escutando. | ServerSocket | ||
| Método | Definido por | ||
|---|---|---|---|
Cria um objeto ServerSocket. | ServerSocket | ||
![]() | addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registra um objeto de ouvinte de evento em um objeto EventDispatcher, de forma que o ouvinte receba a notificação de um evento. | EventDispatcher | |
Vincula este soquete à porta e ao endereço local especificado. | ServerSocket | ||
Fecha o soquete e interrompe a escuta de conexões. | ServerSocket | ||
![]() |
Envia um evento para o fluxo de eventos. | EventDispatcher | |
![]() |
Verifica se o objeto EventDispatcher tem ouvintes registrados para um tipo específico de evento. | EventDispatcher | |
![]() |
Indica se um objeto tem uma propriedade especificada definida. | Object | |
![]() |
Indica se uma ocorrência da classe Object está na cadeia de protótipos do objeto especificado como o parâmetro. | Object | |
Escuta conexões TCP no endereço IP e porta vinculados. | ServerSocket | ||
![]() |
Indica se a propriedade especificada existe e é enumerável. | Object | |
![]() |
Remove um ouvinte do objeto EventDispatcher. | EventDispatcher | |
![]() |
Define a disponibilidade de uma propriedade dinâmica para operações de repetição. | Object | |
![]() |
Retorna a representação da string deste objeto, formatado segundo as convenções específicas para a localidade. | Object | |
![]() |
Retorna a representação de string do objeto especificado. | Object | |
![]() |
Retorna o valor primitivo do objeto especificado. | Object | |
![]() |
Verifica se um ouvinte de evento está registrado nesse objeto EventDispatcher ou em qualquer um de seus ancestrais para o tipo de evento especificado. | EventDispatcher | |
| Evento | Resumo | Definido por | ||
|---|---|---|---|---|
![]() | [transmissão de evento] Despachado quando o Flash Player ou o aplicativo do AIR ganha o foco do sistema operacional e está se tornando inativo. | EventDispatcher | ||
| Despachado quando o sistema operacional fecha este soquete. | ServerSocket | |||
| Despachado quando um soquete remoto procura conectar-se a este soquete de servidor. | ServerSocket | |||
![]() | [transmissão de evento] Despachado quando o Flash Player ou o aplicativo do AIR perde o foco do sistema operacional e está se tornando inativo. | EventDispatcher | ||
bound | propriedade |
isSupported | propriedade |
listening | propriedade |
localAddress | propriedade |
localPort | propriedade |
ServerSocket | () | Construtor |
public function ServerSocket()| Versão da linguagem: | ActionScript 3.0 |
| Versões de runtime: | AIR 2 |
Cria um objeto ServerSocket.
Lança
SecurityError — Este erro ocorre se o conteúdo que chama está sendo executado do lado de fora da área de segurança de aplicativo AIR.
|
bind | () | método |
public function bind(localPort:int = 0, localAddress:String = "0.0.0.0"):void| Versão da linguagem: | ActionScript 3.0 |
| Versões de runtime: | AIR 2 |
Vincula este soquete à porta e ao endereço local especificado.
Parâmetros
localPort:int (default = 0) — O número da porta a ser vinculada no computador local. Se localPort é definida como 0 (padrão), a porta de sistema seguinte que estiver disponível é vinculada. A permissão para se conectar a um número de porta inferior a 1024 está sujeita à política de segurança do sistema. Em sistemas Mac e Linux, por exemplo, o aplicativo deve estar em execução com privilégios de raiz para se conectar a portas inferiores a 1024.
| |
localAddress:String (default = "0.0.0.0") — O endereço IP na máquina local ao qual será vinculado. Este endereço pode ser IPv6 ou IPv4. Se localAddress for definido como 0.0.0.0 (o padrão), o soquete ouvirá todos o endereços IPv4 disponíveis. Para ouvir em todos os endereços IPv6 disponíveis, você deve especificar "::" como o argumento localAddress. Para usar um endereço IPv6, o computador e a rede devem estar configurados para dar suporte a IPv6. Além disso, um soquete vinculado a um endereço IPv4 não pode se conectar a um soquete com endereço IPv6. Da mesma forma, um soquete vinculado à um endereço IPv6 não pode se conectar a um soquete com um endereço IPv4. O tipo de endereço deve ser correspondente.
|
Lança
RangeError — Este erro ocorre quando localPort é menor do que 0 ou maior do que 65535.
| |
ArgumentError — Este erro ocorre quando localAddress não é um endereço IP bem estruturado sintaticamente.
| |
IOError — quando o soquete não pode ser vinculado, tal como quando:
|
close | () | método |
public function close():void| Versão da linguagem: | ActionScript 3.0 |
| Versões de runtime: | AIR 2 |
Fecha o soquete e interrompe a escuta de conexões.
Soquetes fechados não podem ser reabertos. Em vez disso, crie uma nova instância de ServerSocket.
Lança
Error — Este erro ocorre se o soquete não pode ser fechado, ou o soquete não está aberto.
|
listen | () | método |
public function listen(backlog:int = 0):void| Versão da linguagem: | ActionScript 3.0 |
| Versões de runtime: | AIR 2 |
Escuta conexões TCP no endereço IP e porta vinculados.
O método listen() retorna imediatamente. Quando você chama listen(), o objeto ServerSocket envia um evento connect sempre que uma tentativa de conexão é feita. A propriedade socket do objeto de evento ServerSocketConnectEvent referencia um objeto Socket que representa a conexão cliente-servidor.
O parâmetro backlog especifica quantas conexões pendentes são enfileiradas enquanto os eventos connect são processados pelo seu aplicativo. Se a fila está cheia, as conexões adicionais são negadas sem que um evento connect seja despachado. Se o valor padrão do zero for especificado, o comprimento de fila máximo pelo sistema é usado. Este comprimento varia por plataforma e pode ser configurado por computador. Se o valor especificado exceder o comprimento máximo pelo sistema, o comprimento máximo pelo sistema é usado em vez disso. Nenhum meio de descobrir o valor de backlog real é fornecido. (O valor máximo do sistema é determinado pela configuração SOMAXCONN do subsistema de rede TCP no computador de host.)
Parâmetros
backlog:int (default = 0) — O comprimento máximo da fila de conexões pendentes. Se backlog é 0, o comprimento de fila é definido para o valor máximo de sistema.
|
Lança
IOError — Este erro ocorrerá se o soquete não estiver aberto ou vinculado. Este erro também ocorrerá se a chamada de listen() falhar por qualquer outra razão.
| |
RangeError — Este erro ocorre se o parâmetro backlog é menor do que zero.
|
close | Evento |
flash.events.Eventpropriedade Event.type =
flash.events.Event.CLOSE| Versão da linguagem: | ActionScript 3.0 |
| Versões de runtime: | AIR 2 |
Despachado quando o sistema operacional fecha este soquete.
O evento close não é despachado quando o método ServerSocket close() é chamado. Se outros objetos no seu aplicativo confiam no eventoclose, você pode despachar o evento manualmente antes de chamar o métodoclose().
Event.CLOSE define o valor da propriedade type de um objeto de evento close.
Esse evento tem as seguintes propriedades:
| Propriedade | Valor |
|---|---|
bubbles | false |
cancelable | false; não há comportamento padrão a ser cancelado. |
currentTarget | O objeto que está processando ativamente o objeto Event com um ouvinte de evento. |
target | O objeto cuja conexão foi fechada. |
connect | Evento |
flash.events.ServerSocketConnectEventpropriedade ServerSocketConnectEvent.type =
flash.events.ServerSocketConnectEvent.CONNECT| Versão da linguagem: | ActionScript 3.0 |
| Versões de runtime: | AIR 2 |
Despachado quando um soquete remoto procura conectar-se a este soquete de servidor.
Define o valor da propriedadetype de um objeto de evento ServerSocketConnectEvent .
Esse evento tem as seguintes propriedades:
| Propriedade | Valor |
|---|---|
bubbles | false. |
cancelable | false; não há comportamento padrão a ser cancelado. |
currentTarget | Este objeto ServerSocket. |
target | Este objeto ServerSocket. |
Socket | O objeto Socket que representa a nova conexão. |
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.ProgressEvent;
import flash.events.ServerSocketConnectEvent;
import flash.net.ServerSocket;
import flash.net.Socket;
import flash.text.TextField;
import flash.text.TextFieldType;
import flash.utils.ByteArray;
public class ServerSocketExample extends Sprite
{
private var serverSocket:ServerSocket = new ServerSocket();
private var clientSocket:Socket;
private var localIP:TextField;
private var localPort:TextField;
private var logField:TextField;
private var message:TextField;
public function ServerSocketExample()
{
setupUI();
}
private function onConnect( event:ServerSocketConnectEvent ):void
{
clientSocket = event.socket;
clientSocket.addEventListener( ProgressEvent.SOCKET_DATA, onClientSocketData );
log( "Connection from " + clientSocket.remoteAddress + ":" + clientSocket.remotePort );
}
private function onClientSocketData( event:ProgressEvent ):void
{
var buffer:ByteArray = new ByteArray();
clientSocket.readBytes( buffer, 0, clientSocket.bytesAvailable );
log( "Received: " + buffer.toString() );
}
private function bind( event:Event ):void
{
if( serverSocket.bound )
{
serverSocket.close();
serverSocket = new ServerSocket();
}
serverSocket.bind( parseInt( localPort.text ), localIP.text );
serverSocket.addEventListener( ServerSocketConnectEvent.CONNECT, onConnect );
serverSocket.listen();
log( "Bound to: " + serverSocket.localAddress + ":" + serverSocket.localPort );
}
private function send( event:Event ):void
{
try
{
if( clientSocket != null && clientSocket.connected )
{
clientSocket.writeUTFBytes( message.text );
clientSocket.flush();
log( "Sent message to " + clientSocket.remoteAddress + ":" + clientSocket.remotePort );
}
else log("No socket connection.");
}
catch ( error:Error )
{
log( error.message );
}
}
private function log( text:String ):void
{
logField.appendText( text + "\n" );
logField.scrollV = logField.maxScrollV;
trace( text );
}
private function setupUI():void
{
localIP = createTextField( 10, 10, "Local IP", "0.0.0.0");
localPort = createTextField( 10, 35, "Local port", "0" );
createTextButton( 170, 60, "Bind", bind );
message = createTextField( 10, 85, "Message", "Lucy can't drink milk." );
createTextButton( 170, 110, "Send", send );
logField = createTextField( 10, 135, "Log", "", false, 200 )
this.stage.nativeWindow.activate();
}
private function createTextField( x:int, y:int, label:String, defaultValue:String = '', editable:Boolean = true, height:int = 20 ):TextField
{
var labelField:TextField = new TextField();
labelField.text = label;
labelField.type = TextFieldType.DYNAMIC;
labelField.width = 100;
labelField.x = x;
labelField.y = y;
var input:TextField = new TextField();
input.text = defaultValue;
input.type = TextFieldType.INPUT;
input.border = editable;
input.selectable = editable;
input.width = 280;
input.height = height;
input.x = x + labelField.width;
input.y = y;
this.addChild( labelField );
this.addChild( input );
return input;
}
private function createTextButton( x:int, y:int, label:String, clickHandler:Function ):TextField
{
var button:TextField = new TextField();
button.htmlText = "<u><b>" + label + "</b></u>";
button.type = TextFieldType.DYNAMIC;
button.selectable = false;
button.width = 180;
button.x = x;
button.y = y;
button.addEventListener( MouseEvent.CLICK, clickHandler );
this.addChild( button );
return button;
}
}
}
Wed Jun 13 2018, 11:10 AM Z
Ocultar propriedades públicas herdadas
Mostrar propriedades públicas herdadas