Le C et Internet !

Le C et Internet ! - C - Programmation

Marsh Posté le 29-10-2006 à 17:12:42    

Bonjour a tous,
Le sujet est assez explicite mais en réalité je voudrais juste que l'on m'explique comment on fait en C pour pouvoir acceder au net, par exemple comment on fait pour faire un serveur IRC, ou bien un serveur de stream, vers quels pages du man je dois me tourner, et si en prime on peut me donner un petit exemple de ce qu'on peut faire avec le C et internet sa serait super sympas :)
 
Merci beaucoup !

Reply

Marsh Posté le 29-10-2006 à 17:12:42   

Reply

Marsh Posté le 29-10-2006 à 17:14:58    

socket.
 
Ou trouver des libs réseau.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 29-10-2006 à 17:36:01    

geozzz75 a écrit :

Le sujet est assez explicite mais en réalité je voudrais juste que l'on m'explique comment on fait en C pour pouvoir acceder au net, par exemple comment on fait pour faire un serveur IRC, ou bien un serveur de stream, vers quels pages du man je dois me tourner, et si en prime on peut me donner un petit exemple de ce qu'on peut faire avec le C et internet sa serait super sympas :)


Le C n'a pas de support réseau natif.  
 
POSIX.1 définit une interface système appelée sockets disponible sur la plupart des système (à quelques nuances près).
 
Il existe aussi des bibliothèques de plus haut niveau qui prennent en charge FTP, HTTP etc.
 
Par exemple libcurl.


Message édité par Emmanuel Delahaye le 29-10-2006 à 17:37:48

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 30-10-2006 à 19:33:43    

Les fonctions de base de la bibliothèque WinSock2 :
 
int connect(SOCKET s, const struct sockaddr* name, int namelen);
int send(SOCKET s, const char* buf, int len, int flags);
int recv(SOCKET s, char* buf, int len, int flags);
 
Je viens de coder un exemple d'utilisation des socket pour aller chercher une page web sur internet :
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <winsock2.h> /* on a besoin de winsock2 pour utiliser les socket */
  4. int main()
  5. {
  6.     WSADATA WSAData; /* variable servant à l'initialisation de winsock2 */
  7.     SOCKET sock; /* socket de donnée qui va nous permettre de communiquer */
  8.     IN_ADDR addr; /* variable pour stocker l'adresse du serveur web */
  9.     SOCKADDR_IN sin; /* structure qui va stocker les informations sur la destination */
  10.     HOSTENT *host; /* variable dont on a besoin pour obtenir l'ip a partir du domaine */
  11.     char buffer[4096] = {0}; /* le buffer qui va contenir la page web, 4 ko max */
  12.     WSAStartup(MAKEWORD(2,0), &WSAData); /* initialisation de winsock2 */
  13.     sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); /* initialisation du socket */
  14.     host = gethostbyname("www.google.fr" ); /* récupération du nom d'hôte a partir du nom de domaine */
  15.     memcpy(&addr, host->h_addr, host->h_length); /* récupération de l'ip à partir du nom d'hote */
  16.     sin.sin_family = AF_INET; /* on stock la famille du réseau, en général c'est AF_INET */
  17.     sin.sin_port = htons(80); /* on stock le port sur lequel se connecter */
  18.     sin.sin_addr = addr; /* on stock l'adresse ip du serveur */
  19.     connect(sock, (SOCKADDR *)&sin, sizeof(sin)); /* on se connecte au serveur */
  20.     strcpy(buffer, "GET http://www.google.fr/ HTTP/1.0\n\n" ); /* on formule la requete GET, protocole HTTP */
  21.     send(sock, buffer, strlen(buffer), 0); /* on envoi la requête stockée dans le buffer */
  22.     recv(sock, buffer, sizeof(buffer), 0); /* on attend la page web qu'on va stocker dans le buffer */
  23.     closesocket(sock); /* on ferme le socket */
  24.     WSACleanup(); /* on nettoi la bibliothèque winsock2 */
  25.     printf(buffer); /* on affiche la page contenue dans le buffer */
  26. return 0;
  27. }


ne pas oublier de linker libws2_32.a
 
J'ai commenté chaque ligne, le code est très rudimentaire mais ca permet de voir à quoi ressemble les sockets et d'avoir une application tout de suite très intéressante.
 
Attention c'est une page web que le programme demande au serveur, ce dernier va donc nous envoyer du code html, c'est ce qui sera stocké dans le buffer et affiché à l'écran   :whistle:  
 
Un cours succins mais clair sur les socket en français : http://c.developpez.com/WalrusSock/
Beaucoup d'exemple sur l'utilisation des socket : http://www.cppfrance.com/recherche [...] &tr=source


Message édité par zakinster le 30-10-2006 à 19:41:20
Reply

Sujets relatifs:

Leave a Replay

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