Socket (gb.net)

Essa classe implementa um socket cliente para permitir que seus programas possam se conectar com os Sockets servidores. conexões TCP e Local (Unix sockets) que são implementados.

Esta classe herda Stream em Classes nativas.

Esta classe é criável.

Propriedades
Host   O host para o qual você gostaria de se conectar.
LocalHost   Depois que uma conexão TCP é estabelecida, esta propriedade indica o IP local utilizado por esta conexão.
LocalPort   Depois que uma conexão TCP é estabelecida, esta propriedade indica a porta local (1-65535) utilizada por esta conexão.
Path   Retorna ou define o caminho do socket local que você deseja se conectar.
Port   A porta para a qual você gostaria de se conectar no host remoto.
RemoteHost   Depois que uma conexão TCP é estabelecida, esta propriedade indica o IP remoto utilizado por esta conexão.
RemotePort   Depois que uma conexão TCP é estabelecida, esta propriedade indica a porta remota (1-65535) utilizada por esta conexão.
Server   Se o socket foi criado pelo método Accept de um ServerSocket, então, retorna o objeto ServerSocket.
Status   Indica o estado atual de um objeto Socket.
StatusText  
Timeout   Retorna ou define o tempo limite do soquete, em milissegundos.

Inherited properties
Blocking   Retorna ou define se o estream está bloqueando.
ByteOrder   Retorna ou define a ordem de bytes usado para ler ou escrever dados binários para o stream.
EndOfFile   Esta propriedade sinaliza a última utilização do LINE INPUT que chegou ao fim do arquivo, em vez da leitura de uma linha completa com um caractere de fim-de-linha.
EndOfLine   Retorna ou define o separador de nova linha usada pelo stream.
Eof  
Handle   Retorna o descritor de arquivo do sistema associado ao Stream.
IsTerm  
Lines   Retorna um objeto virtual que permite enumerar o stream, linha por linha.
NoShare  
NullTerminatedString  
Tag   Retorna ou define a tag associado ao Stream.
Term  

Métodos
Connect   Utilize este método para estabelecer uma conexão TCP ou local (Unix) com um servidor remoto ou local.
Peek   Esta função permite receber dados do Socket.

Inherited methods
Begin   Inicia o buffer de escrita de dados para o stream, de modo que tudo será enviado quando o método Send for chamado.
Close   Fecha uma stream.
Drop   Libera os dados que foi buffered desde a última chamada do método Begin.
ReadLine   Ler uma linha de texto a partir do stream, como a instrução LINE INPUT.
Send   Envia todos os dados, de uma só vez, desde a última chamada de Begin.
Watch  

Eventos
Closed   Este evento é levantado depois que o socket remoto fecha a conexão.
Error   Este evento levanta quando alguma falha ocorreu (por exemplo, o servidor remoto recusou a conexão).
Found   Ao conectar usando sockets TCP, o primeiro passo é traduzir o nome de host para o host IP. O objeto irá gerar este evento quando esta parte do processo de conexão for concluída.
Read   Este evento é levantado quando os dados chegam ao socket enviado pelo outro lado da conexão.
Ready   Este evento é levantado depois que uma conexão foi estabelecida com sucesso.
Write   Este evento é gerado quando o soquete está pronto para a escrita.

Esta classe realiza o seu trabalho de forma assíncrona, para que o programa não seja interrompido durante a conexão, enviando ou recebendo dados.

Esta classe é derivada da classe Stream, assim você pode usar as Funções de Stream e Entrada/Saída para enviar e receber dados, e para fechar o socket.

Sockets pode ser usado se a biblioteca "gb.net" for incluída no projeto. Para incluir esta biblioteca use o menu [Project] [Properties] [Components] marque a componente "gb.net".

Exemplo

' Gambas class file

PUBLIC MySock AS Socket

PUBLIC SUB Button1_Click()

  DIM sBuf AS String

  MySock = NEW Socket
  MySock.Connect("localhost", 7000)

  DO WHILE (MySock.Status <> 7) AND (MySock.Status > 0)
    WAIT 0.1
  LOOP

  IF MySock.Status <> 7 THEN
    PRINT "Error"
    QUIT
  END IF

  sBuf = "Hello over there.\n"
  WRITE #MySock, sBuf, Len(sBuf)

  DO WHILE Lof(MySock) = 0
    WAIT 0.1
  LOOP
  READ #MySock, sBuf, Lof(MySock)
  PRINT sBuf

  CLOSE #MySock

END

Observações sobre esse exemplo:
  • Apesar da sondagem ser mostrado aqui, você deve realmente usar retornos de chamada para reagir em diferentes estados.

  • Veja o tutorial Network Programming, sobre o uso do networking. Há comentários para cada linha deste exemplo.

  • Há um outro exemplo na distribuição sobre Networking: ClientSocket.