Socket (gb.net)

Questa classe implementa un socket client che permette ai vostri programmi di connettersi a socket servers. Sono supportate connessioni TCP e Locali (Unix sockets).

Questa classe eredita Stream in gb.

Questa classe è creabile.

Proprietà
Host   L'host al quale vi vorreste connettere.
LocalHost   Una volta che la connessione TCP è stabilita, questa proprietà riflette l'IP locale utilizzato dalla connessione.
LocalPort   Una volta che la connessione TCP è stabilita, questa proprietà riflette la porta locale (1-65535) utilizzata dalla connessione.
Path   Restituisce o imposta il percorso del socket locale al quale volete connettervi.
Port   La porta alla quale vorreste connettervi sull'host remoto.
RemoteHost   Una volta che la connessione TCP è stabilita, questa proprietà riflette l'IP remoto utilizzato dalla connessione.
RemotePort   Una volta che la connessione TCP è stabilita, questa proprietà riflette la porta remota (1-65535) utilizzata dalla connessione.
Server  
Status   Riflette lo stato corrente di un'istanza di Socket.
StatusText  
Timeout  

Proprietà ereditate
Blocking   Restituisce o imposta se lo stream è bloccato.
ByteOrder   Restituisce o imposta il byte order utilizzato per leggere o scrivere dati binari nello stream.
EndOfFile   Questa proprietà permette di sapere se l'ultimo utilizzo di LINE INPUT ha raggiunto la fine del file invece di leggere una riga completa con un carattere di end-of-line.
EndOfLine   Restituisce o imposta il separatore di nuova riga utilizzato dallo stream.
Eof   Ritorna se uno stream ha raggiunto la fine.
Handle   Restituisce il descrittore del file di sistema associato allo Stream.
IsTerm   Ritorna se un flusso è associato a un terminale.
Lines   Restituisce un oggetto virtuale che consente di enumerare uno stream riga per riga.
NoShare  
NullTerminatedString  
Tag   Restituisce o imposta il tag associato allo stream.
Term   Restituisce un oggetto virtuale che consente di gestire il terminale associato allo stream.

Metodi
Connect   Utilizzate questo metodo per stabilire una connessione Locale (Unix) o TCP con un server locale o remoto.
Peek   Questa funzione permette di ricevere dati da un Socket.

Metodi ereditati
Begin   Inizia a bufferizzare i dati scritti nello stream, in modo che tutto venga inviato quando viene chiamato il metodo Send.
Close   Chiude lo stream.
Drop   Libera i dati che sono stati memorizzati nel buffer dall'ultima chiamata al metodo Begin.
ReadLine   Legge una riga di testo dallo stream, come l'istruzione LINE INPUT.
Send   Invia tutti i dati, in un'unica volta, dall'ultima chiamata a Begin.
Watch   Avvia o interrompe la visione del descrittore del file di stream per la lettura o la scrittura, dopo che questo è stato aperto.

Eventi
Closed   Questo evento viene generato dopo che il lato remoto del socket ha chiuso la connessione.
Error   Questo evento viene generato quando qualcosa fallisce (per esempio quando l'host remoto rifiuta la connessione).
Found   Quando ci si connette utilizzando sockets TCP, il primo passo è quello di tradurre il nome dell'host nel suo indirizzo IP corrispondente. L'oggetto genererà questo evento quando questa parte del processo di connessione sarà terminato.
Read   Questo evento viene generato quando dei dati arrivano al socket dall'altro lato della connessione.
Ready   Questo eventi viene generato dopo che una connessione è stata stabilita con successo.
Write  

Questa classe lavora in modo asincrono, in questo modo il programma non si bloccherà connettendosi, inviando o ricevendo dati.

Questa classe deriva dalla classe Stream, permettendovi quindi di utilizzare flussi standard per inviare e ricevere dati, e per chiudere il socket.

I Sockets possono essere utilizzati se la libreria "gb.net" è inclusa nel progetto. Per includere questa libreria utilizzate il menu [Project] [Properties] [Components] e spuntate il componenti "gb.net".

Examples

' 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

Commenti a questo esempio

  • Anche se qui viene illustrata solo la tecnica del polling, voi potreste in alternativa utilizzare le callbacks per reagire a differenti stati.

  • Leggete Network Programming, il tutorial sull'utilizzo del networking. Ci sono commenti per ogni linea di questo esempio.

  • C'è un altro esempio nella distribuzione in Networking ClientSocket.