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.Event
propriedade 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.ServerSocketConnectEvent
propriedade 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