Socket (gb.net)

Cette classe implémente un socket client pour permettre à vos programmes de se connecter aux sockets serveurs. Les connexions TCP et Local (sockets UNIX) sont implémentées.

Cette classe hérite Stream dans gb.

Cette classe est instanciable.

Propriétés
Host   L'hôte auquel vous aimeriez vous connecter.
LocalHost   Une fois la connection TCP établie, cette propriété indique l'adresse IP local utilisée par cette connection.
LocalPort   Une fois la connection TCP établie, cette propriété indique le port local (1-65535) utilisé par cette connection.
Path   Retourne ou définit le chemin du socket local auquel vous voulez vous connecter.
Port   Le port vers lequel vous souhaitez vous connecter sur l'hôte distant.
RemoteHost   Une fois la connection TCP établie, cette propriété indique l'IP distant utilisée par cette connection.
RemotePort   Une fois la connection TCP établie, cette propriété indique le port distant (1-65535) utilisé par cette connection.
Server   Si le socket a été créé par la Méthode Accept d'un ServerSocket, retourne cet objet ServerSocket.
Status   Indique l'état actuel d'un objet Socket.
StatusText  
Timeout   Retourne ou définit le délai d’attente d’un socket, en millisecondes.

Propriétés héritées
Blocking   Retourne ou définit si le flux est bloquant.
ByteOrder   Retourne ou indique l'ordre des octets utilisé pour lire ou écrire des données binaires dans un flux.
EndOfFile   Cette propriété signale si la dernière utilisation de LINE INPUT a atteint la fin du fichier au lieu de lire une ligne entière avec un caractère de fin de ligne.
EndOfLine   Retourne ou indique le retour de chariot utilisé par ce flux.
Eof  
Handle   Retourne le descripteur de fichier système associé au flux Stream.
IsTerm  
Lines   Retourne un objet virtuel qui permet d'énumérer un flux ligne par ligne.
NoShare  
NullTerminatedString  
Tag   Retourne ou définit l’étiquette associée au flux.
Term  

Méthodes
Connect   Utiliser cette méthode pour établir une connection Locale (UNIX) ou RCP avec un serveur local ou TCP distant.
Peek   Cette fonction vous permet de recevoir des données depuis la Socket.

Méthodes héritées
Begin   Démarre la mise en tampon des données écrites dans le flux, de manière à ce que tout soit envoyé lors de l'appel à la Méthode Send.
Close   Ferme le flux.
Drop   Dépose les données mises en tampon depuis le dernier appel à la méthode Begin.
ReadLine   Lit une ligne de texte dans le flux, comme l'instruction LINE INPUT.
Send   Envoie toutes les données depuis le dernier appel à Begin en une seule salve.
Watch  

Evénements
Closed   Cette évènement est levé après qu'une socket distante a fermée la connection.
Error   Cet évènement est levé quand certains a échoué (par exemple un hôte distant a refusé la connection).
Found   Quand la connection utilisant les sockets TCP, la première étape est de traduire le nom de l'hôte en IP de l'hôte. L'objet lèvera cet évènement quand cette partie du processus de connection est terminé.
Read   Cet évènement est levé quand les données arrivent à la socket à partir d'une autre connection.
Ready   Cet Evènement est levé après qu’une connexion ait été établie avec succès.
Write   L'Evènement Socket est levé quand le socket (connecteur) est pret pour l'écriture.

Cette classe effectue son travail de façon asynchrone, donc le programme ne sera pas arrêté tant qu'il y a une connexion, de l'envoi ou de la réception de données.

Cette classe est dérivée de la classe Stream, donc vous pouvez utiliser les Fonctions de flux et d'entrée/sortie standard pour envoyer et recevoir des données, et fermer la socket.

Les sockets peuvent être utilisées si la bibliothèque "gb.net" est incluse dans le projet. Pour inclure cette bibliothèque utilisez le menu [Project] [Properties] [Components] et cochez le composant "gb.net".

Exemple

' 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

Remarques concernant l'exemple :

  • Malgré le codage de l'exemple, vous devriez plutôt utiliser les évènements pour répondre aux différents états.

  • Voir Network Programming, le tutoriel sur l'utilisation du réseau. Il y a des commentaires pour chaque ligne de cet exemple.

  • Il y a un autre exemple dans la distribution sous Networking: ClientSocket.