[C++] Recherche cours sur les sockets

Recherche cours sur les sockets [C++] - C++ - Programmation

Marsh Posté le 19-10-2001 à 19:11:45    

Hello !
 
Voilà je cherche des cours ou tutoriaux sur les sockets sous windows.
 
Merci d'avance !


---------------
The N·Zone New Formation Official Website
Reply

Marsh Posté le 19-10-2001 à 19:11:45   

Reply

Marsh Posté le 19-10-2001 à 20:18:32    

Reply

Marsh Posté le 19-10-2001 à 20:29:01    

tiens au passage mon cours de socket en C de l'an dernier :
 
Programmation des sockets
 
I) Introduction
 
socket = extension de la notion de descripteur de fichier  
-> caractérisé par un descripteur inséré ds la table des descripteurs d'un process
-> utilisation des fonctions standard
 
implémenté pr la 1ere fois sous unix BSD
 
 
II) Concepts de base
 1) Famille de protocole et famille d'adressage (domaine)
  a) Famille de protocole (Protocol Family)
 
Ensemble de protocoles répondant à une caractérisitique commune dans le cadre d'une architecture réseau
ex : PF_INET caractérise les protocoles Internet reposant sur IP (TCP et UDP par ex)
ex : PF_UNIX caractérise les protocoles propres aux systèmes UNIX
 
  b) Famille d'adresse (Adresse Family)
 
Ensemble de protocoles définissant un point de connection réseau de manière identique
ex : AF_INET : il faut le couple adresse IP / n° de port (www.ec-lille.fr / 80 pr accéder au serveur de l'école)
 
extrait de <sys/socket.h> (pr montrer pkoi on dit souvent que y a pas de diff entre PF_xxx et AF_xxx)
#define PF_UNIX 0
#define PF_INET 1
#define PF_APPLTALK 2
...
...
#define AF_INET PF_INET
 
 
 2) Type de socket
 
couche application du modèle OSI
 
SOCK_DGRAM : socket de type datagram pour communication en mode non connecté (rapide mais non fiable) -> ex : UDP
SOCK_STREAM : flux en mode connecté (fiable) -> ex : TCP
SOCK_RAW : socket "brute" servant à définir de nouveau protocole -> accès direct à IP
 
 
 
III) Famille d'adressage et structures de données
 
* sys/socket.h
 
struct sockaddr {
       u_short sa_family; /* famille d'adressage */
       char    sa_data[14]; /* autres données d'une famille d'adressage */
}
 
* AF_UNIX (machine locale)
 
sys/un.h
struct sockaddr_un {
       u_short sun_family; /* AF_UNIX */
       cahr    sun_path[108]; /* Nom du pseudo fichier de synchro */
}
 
pseudo fichier de synchro : il apparait avec un ls -la (avec la lettre s au debut de ses attributs de protection)
 
* AF_INET
 
netinet/in.h
struct sockaddr_in {
       u_short    sin_family; /* AF_INET */
       u_short    sin_port; /* port de connection */
       struct in_addr sin_addr; /* adresse IP */
       char    sin_zero[8]; /* réservé */
}
 
struct in_addr {
       u_long    s_addr;
}
 
 
 
 
IV) Primitives de programmation de sockets
 1) Création d'un socket
 
int socket (u_short domain, /* famille d'adressage : AF_UNIX, AF_INET */
        int type,       /* type de socket : SOCK_DGRAM, SOCK_STREAM */
 int protocol   /* mettre 0 pr le protocol par défaut (svt y en a qu'un de tte facon) */
);
 
L'entier retourné est un descripteur de socket.
 
ATTENTION !  
descripteur de fichier :  
0 = entrée standard (stdin)
1 = sortie standard (stdout)
2 = sortie erreur (stderror)
 
 
 
 2) Liaison d'une socket (bind)
 
Permet d'associer une adresse a une socket
int bind (int sd,        /* descripteur de socket */
      struct sockaddr * addr,       /* addresse associée */
      int longueur        /* nbre d'octets de addr */
);
 
Renvoi -1 en cas d'erreur.
 
 
Pour les primitives suivantes, regardé ds le manuel
 
 3) Primitives d'entrees/sorties
  a) Lecture
 
En mode non connecté : recvfrom  
En mode connecté : recv, read (standard)
 
 
  b) Ecriture
 
En mode non connecté : sendto
En mode connecté : send, write
 
 
 4) Etablir une connection
 
process actif (écrivain/client)  | process passif (lecteur/serveur)
---------------------------------+------------------------------------
socket -> sde                    | socket -> se (socket d'écoute)
                                 | bind   -> se est lié à une adresse
                                 | listen -> se écoute les demandes de connection
connect -> demande de connection | accept -> accepter une demande -> sd = socket de dialogue
ecriture sur sde   --------------->lecture sur sdl...
lecture sur sde    <---------------ecriture sur sdl...
 
 
 
 5) Libération d'une socket
 
int shutdown( int sd, int mode);
 
mode = 0 -> socket bloqué en lecture
mode = 1 -> socket bloqué en écriture
mode = 2 -> socket complètement fermé
 
 
close (int sd);
Equivalent a shutdown avec mode = 2
 
 
 
 6) Divers
 
*AF_UNIX
unlink(char *) -> supression du pseudo fichier ("sun_path" )
A NE PAS OUBLIER EN FIN DE FICHER, SINON ERREUR BIND QD ON RELANCE LE PROG
 
*Gestion des erreurs
perror
 
*Fonction de conversion d'entiers
htons ou htonl (host to network short/long)
ntohs ou ntohl (network to host short/long)

Reply

Marsh Posté le 19-10-2001 à 21:46:34    

Regarde dans MSDN l'aide sur les fonctions socket, send, recv, connect... C'est plutot bien explique.
Si t'as des questions, n'hesite pas a me mailer.

Reply

Marsh Posté le 20-10-2001 à 13:13:09    

ok, merci chadenat pour ce lien :)
 
merci aussi a toi lolo pour ton cours, qui a l air bien synthetisé donc c un bon point pour commencer :)
 
enfin, merci a toi aussi bjbebert,  je ne suis pas tres frillant de msdn car j aurais voulu utiliser les socket sous linux, mais je ne manquerasi pas de regarde l aide de msdn

Reply

Marsh Posté le 20-10-2001 à 14:19:31    

merci bien pour le lien et le cours !
 
je vais me plonger dedans et voir ce que ça donne  ;)
 
@+ !


---------------
The N·Zone New Formation Official Website
Reply

Marsh Posté le 20-10-2001 à 17:49:16    

socket = extension de la notion de descripteur de fichier  
-> caractérisé par un descripteur inséré ds la table des descripteurs d'un process
-> utilisation des fonctions standard
 
j ai l impression que je vais pas tout comprendre snas les episodes precedents ;)
 
en fiat meme je comprends rien lol :)

Reply

Marsh Posté le 20-10-2001 à 17:49:49    

socket = extension de la notion de descripteur de fichier  
-> caractérisé par un descripteur inséré ds la table des descripteurs d'un process
-> utilisation des fonctions standard
 
j ai l impression que je vais pas tout comprendre snas les episodes precedents ;)
 
en fiat meme je comprends rien lol :)

Reply

Marsh Posté le 20-10-2001 à 17:50:25    

socket = extension de la notion de descripteur de fichier  
-> caractérisé par un descripteur inséré ds la table des descripteurs d'un process
-> utilisation des fonctions standard
 
j ai l impression que je vais pas tout comprendre snas les episodes precedents ;)
 
en fiat meme je comprends rien lol :)

Reply

Marsh Posté le 21-10-2001 à 11:59:23    

ct un cours unix a la base :D
c juste pr dire qu'une socket c en gros un n° qui caractérise ta connexion, comme le descripteur de fichiers est un n° qui caractérise ton fichier dans le systeme de fichier
ca se manipule de la meme facon, avec des fonctions C standard
 
(en gros, tu peux zapper si tu captes pas :D :D)

 

[edtdd]--Message édité par __Lolo__--[/edtdd]

Reply

Marsh Posté le 21-10-2001 à 11:59:23   

Reply

Marsh Posté le 21-10-2001 à 16:37:32    

t inquiete je capte :) i am a unix lover :)
mais enfait c pas super detaillé.....faut deja s y connaitre

Reply

Marsh Posté le 21-10-2001 à 16:42:46    

Surtout que les sockets windows sont différents des sockets unix.

Reply

Marsh Posté le 21-10-2001 à 17:15:13    

yep, mais justement, c etiat pour unix :)

Reply

Marsh Posté le 21-10-2001 à 17:17:27    

oups je viens de voir que je me suis incrusté dans le topic de [ ZED ]......je sais pas pourquoi masi je croyais vraiment en etre l auteur lol....j ai du confondre avec un topic au meme titre, desole

 

[edtdd]--Message édité par slvn--[/edtdd]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed