Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
800 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Le C et Internet !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Le C et Internet !

n°1466997
geozzz75
Posté le 29-10-2006 à 17:12:42  profilanswer
 

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 !

mood
Publicité
Posté le 29-10-2006 à 17:12:42  profilanswer
 

n°1466998
masklinn
í dag viðrar vel til loftárása
Posté le 29-10-2006 à 17:14:58  profilanswer
 

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
n°1467005
Emmanuel D​elahaye
C is a sharp tool
Posté le 29-10-2006 à 17:36:01  profilanswer
 

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/
n°1467782
zakinster
Posté le 30-10-2006 à 19:33:43  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Le C et Internet !

 

Sujets relatifs
CSS Firefox / Internet Explorer PNGCSS et Internet sur téléphone portable
Que pensent les développeurs d'internet explorer ?[Résolu] Récupération automatique de fichier sur Internet
batch au login des utilisateurs pour lancer une page internetAide pour creer un site internet
Site internetcentrer sa page internet
flash qui plante sous Internet explorer.FLASH + PHPPassword sur une page internet ?
Plus de sujets relatifs à : Le C et Internet !


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR