socket Commandes Internes Tcl
NOM
socket - Ouvre une connection réseau TCP
SYNTAXE
socket ?options? host port
socket -server command ?options? port
DESCRIPTION
Cette commande ouvre une socket réseau et retourne un identificateur de canal qui peut être employé dans les appels futurs des commandes comme
read,
puts et
flush. A présent seul le protocole réseau TCP est supporté; les versions futures pourront inclure un support pour des protocoles supplémentaires. La commande
socket peut être employée pour ouvrir soit le coté client ou serveur d'une connection, dépendant de si le switch
-server est spécifié
SOCKETS CLIENTES
Si l'option -server n'est pas spécifiée, alors la partie client d'un connection est ouverte et la commande retourne un identificateur de canal qui peut être utilisé pour la lecture et l'écriture. Port et host spécifient un port pour la connection; il doit y avoir un serveur qui accepte des connections sur ce port Port est un numéro de port entier et host est soit un nom qualifié tel que www.sunlabs.com ou une adresse numérique IP telle que 127.0.0.1. Utilisez localhost pour vous référer à la machine sur laquelle la commande a été appelée.
Les options suivantes peuvent être aussi présentes avant
host pour spécifier des information supplémentaires concernant la connection:
- -myaddr addr
- Addr donne le nom qualifié ou l'adresse IP numérique de l'interface réseau coté client à utiliser pour la connection. Cette option peut être utile si la machine cliente a plusieurs interfaces réseau Si l'option est omise alors l'interface coté client sera choisie par le logiciel système.
-myport port- Port spécifie un numéro de port entier à utiliser pour le coté client de la connection. Si cette option est omise, un numéro de port client aléatoire sera choisi par le logiciel système.
-async
- L'option -async induit une connection asynchrone pour la socket cliente. Ceci signifie que la socket sera crée immédiatement mais ne peut pas encore être connectée au serveur, quand l'appel de socket retourne. Quand une gets ou flush est fait sur le socket avant que la tentative de connection ait réussi ou échoué, si la socket est en mode bloquant, l'opération attendra jusqu'a ce que la connection soit complétée ou échoue. Si la socket est en mode non bloquant et qu'une gets ou flush est fait sur la socket avant que la tentative de connection ait réussi ou échoué, l'opération retourne immédiatement et fblocked sur le socket retourne 1.
SOCKETS SERVEUR
Si l'option -server est spécifiée alors la nouvelle socket sera un serveur pour le port indiqué par port. Tcl acceptera automatiquement les connections sur ce port. Pour chaque connection Tcl créera un nouveau canal qui pourra être employé pour communiquer avec le client Tcl appelle alors command avec trois arguments supplémentaire: le nom du nouveau canal, l'adresse, en notation réseau, de la machine cliente, et le numéro de port du client.
L'option supplémentaire suivante peut aussi être spécifiée avant
host:
- -myaddr addr
- Addr donne le nom qualifié ou l'adresse IP numérique de l'interface réseau du coté serveur à utiliser pour la connection. Cette option peut être utile si la machine serveur a plusieurs interfaces réseau. Si l'option est omise alors la socket serveur est attachée à l'adresse spéciale INADDR_ANY ainsi elle peut accepter les connections sur une interface quelconque.
Les canaux serveurs ne peuvent pas être utilisés pour les entrées ou sorties; leur seul usage est d'accepter de nouvelles connections client. Les canaux créés pour chaque connection client entrante sont ouvert pour l'entrée et la sortie. Fermer le canal serveur ferme le serveur ainsi aucune nouvelle connectios ne sera acceptée néanmoins, les connections existantes ne seront pas affectées.
Les sockets serveurs dépendent du mécanisme d'évènement Tcl pour réagir aux nouvelles connections ouvertes. Si l'application n'entre pas dans la boucle d'évènement, par exemple en appelant la commande
vwait ou l'appel de fonction C
Tcl_DoOneEvent, alors aucunes connections ne seront acceptées
OPTIONS DE CONFIGURATION
La commande
fconfigure peut être utilisée pour consulter plusieurs options de configuration en lecture seule pour les canaux socket:
- -error
- Cette option lit le statut d'erreur courant de la socket donnée. Ceci est utile quand vous avez besoin de determiner si une opération de connection asynchrone a réussi. S'il y a eu une erreur, le message d'erreur est renvoyé. Si il n'y avait pas d'erreur, une chaîne vide est renvoyée.
-sockname
- Cette option retourne une liste de trois éléments, l'adresse, le nom de machine et le numéro de port pour la socket. Si le nom de machine ne peut pas calculé, le second élément est identique à l'adresse, le premier élément de la liste.
-peername
- Cette option n'est pas supportée par les sockets serveur. Pour les sockets clients acceptés, cette option retourne une liste de trois éléments; ce sont l'adresse, le nom de machine et le port auquels la socket peer est connectée ou liée. Si le nom de machine ne peut être calculé, le second élément de la liste est identique à l'adresse, son premier élément.
VOIR EGALEMENT
Dernière révision: 8.0