Client socket tout simple

Client socket tout simple - C - Programmation

Marsh Posté le 18-01-2007 à 10:55:43    

Bonjour à tous,
 
J'ai besoin de faire un client C tout simple dans lequel je dois passer un num de port et un message en argument.
J'ai étudié ce langage en cours mais j'avoue que j'y ai jamais rien compris et que j'ai jamais réussi à faire un prog sans erreurs t_t.
Je travaille habituellement en VB.NET, langage très différent et beaucoup plus simplifié (je trouve).
J'ai bien sûr maté sur google des exemples tout faits de clients C, mais je n'arrive pas à en builder ne serai-ce qu'un seul.
Quelqu'un pourrait-il me donner un exemple tout simple qui fonctionne sur windows? Car là je désespère T.T
 
Merci d'avance  :jap:


---------------
Les neurones c'est neurologique.
Reply

Marsh Posté le 18-01-2007 à 10:55:43   

Reply

Marsh Posté le 18-01-2007 à 11:02:23    

les gens roots a écrit :

J'ai bien sûr maté sur google des exemples tout faits de clients C, mais je n'arrive pas à en builder ne serai-ce qu'un seul.


Moi j'arrive bien a compiler celui ci:
http://www.cppfrance.com/codes/MIN [...] 39517.aspx

 

Si t'as des questions précises ensuite.. Pose les..

 


Message édité par bad___day le 18-01-2007 à 11:26:48
Reply

Marsh Posté le 18-01-2007 à 11:04:00    

Merci c'est cool.  
Mais je viens d'arriver à builder un client que j'ai codé vite fait. Je vais essayer de faire marcher le mien avant d'essayer ton source histoire de comprendre un peu mieux comment ça marche ce langage =). J'te tiens au jus si je me résigne à utiliser ton source : )


---------------
Les neurones c'est neurologique.
Reply

Marsh Posté le 18-01-2007 à 11:18:47    

les gens roots a écrit :

J'ai besoin de faire un client C tout simple dans lequel je dois passer un num de port et un message en argument.
J'ai étudié ce langage en cours mais j'avoue que j'y ai jamais rien compris et que j'ai jamais réussi à faire un prog sans erreurs t_t.
Je travaille habituellement en VB.NET, langage très différent et beaucoup plus simplifié (je trouve).
J'ai bien sûr maté sur google des exemples tout faits de clients C, mais je n'arrive pas à en builder ne serai-ce qu'un seul.
Quelqu'un pourrait-il me donner un exemple tout simple qui fonctionne sur windows?


Il faut que tu comprennes bien que le langage C ne permet pas de 'faire un client'. Il permet simplement de mettre en oeuvre des fonctions systèmes (par exemple, les sockets) qui n'ont rien à voir avec le langage C. C'est l'ensemble de la maitrise des ces deux domaines :  
- sockets (dont certains détails dépendent du système)
- langage C
qui fait que tu pourras éventuellement réaliser un programme tel qu'un client en C. Encore faudrait-il le spécifier d'une manière un peu plus précise.
 
Si tu ne connais pas le langage C, il faut l'apprendre, et ça ne se fait pas en 5 minutes. Oui, le C est plus difficile que le VB. Mais il permet une meilleure maitrise et génère du code généralement très efficace. Par contre, la moindre erreur de codage est gravissime et il y a peu de contrôles. Il faut donc maitriser ce langage pour prétendre réaliser une application en C.
 
Il y a des livres, des sites, des tutoriels... (des références sur mon site).
 
En plus du langage lui même, il faut aussi que tu apprennes à maitriser les outils de développement qui vont avec.
 
NOTA : le code de Bad__day est correct (je crois reconnaitre une certaine 'patte' héhé), mais il est inutilement complexifié par la colorisation (qui rend l'éxécution peu claire). D'autre part, il y a des fautes d'orthographe difficilement supportables dans les textes...
 
Version révisée :  

Code :
  1. #include <winsock2.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #define IP "127.0.0.1"
  6. #define PORT 2000
  7. int main (void)
  8. {
  9.    int error;
  10.    puts (" <[ Client Bad_Day ]>\n\n" );
  11.    WSADATA WSAData;
  12.    WSAStartup (MAKEWORD (2, 0), &WSAData);
  13.    SOCKET sock = sock = socket (AF_INET, SOCK_STREAM, 0);
  14.    if (sock != INVALID_SOCKET)
  15.    {
  16.       printf (":-) Socket %d is now opened in TCP/IP mode.\n", sock);
  17.       SOCKADDR_IN sin;
  18.       sin.sin_addr.s_addr = inet_addr (IP);
  19.       sin.sin_family = AF_INET;
  20.       sin.sin_port = htons (PORT);
  21.       error = connect (sock, (SOCKADDR *) & sin, sizeof sin);
  22.       if (error != SOCKET_ERROR)
  23.       {
  24.          char bufferSend[50];
  25.          char bufferRecv[50];
  26.          int go = 1;
  27.          printf (":-) Connected to server...\n\n" );
  28.          do
  29.          {
  30.             printf ("CLIENT > " );
  31.             fflush (stdout);
  32.             fgets (bufferSend, sizeof bufferSend, stdin);
  33.             error = send (sock, bufferSend, strlen (bufferSend), 0);
  34.             printf
  35.                ("\nAttente de la reponse du serveur (patientez svp)....\n\n" );
  36.             if (error != SOCKET_ERROR)
  37.             {
  38.                error = recv (sock, bufferRecv, sizeof (bufferRecv) - 1, 0);
  39.                if (error == SOCKET_ERROR)
  40.                {
  41.                   go = 0;
  42.                }
  43.                else
  44.                {
  45.                   bufferRecv[error] = '\0';
  46.                   printf ("SERVER < %s\n", bufferRecv);
  47.                   fflush (stdout);
  48.                }
  49.             }
  50.             else
  51.             {
  52.                go = 0;
  53.             }
  54.          }
  55.          while (go);
  56.          printf ("::::: send impossible, closing socket...\n" );
  57.          closesocket (sock);
  58.          printf ("::::: Socket %d is new closed.\n", sock);
  59.       }
  60.       else
  61.       {
  62.          printf (":-/ Not connected ! connection failure.\n" );
  63.          return EXIT_FAILURE;
  64.       }
  65.    }
  66.    else
  67.    {
  68.       printf (":-/ Invalid Socket. Socket is not opened.\n" );
  69.       return EXIT_FAILURE;
  70.    }
  71.    WSACleanup ();
  72.    system ("pause" );
  73.    return EXIT_SUCCESS;
  74. }


Message édité par Emmanuel Delahaye le 18-01-2007 à 11:31:07

---------------
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 18-01-2007 à 11:41:49    

Merci c'est gentil mais je me remettrai à apprendre le C le jour où j'aurai un projet en C à faire ^^ pour l'instant VB NET me convient parfaitement. C'est juste pour un problème de communication avec une autre appli qui utilise un serveur en C qui ne reçoit pas ou mal mes .send
 
N.B: j'ai réussi (enfin) faire un petit client qui fonctionne mais je n'arrive tjs pas à faire interprêter mes messages du côté du serveur externe à mon prog. Je vais m'acharner un peu.
En tout cas merci pour votre aide :jap:


---------------
Les neurones c'est neurologique.
Reply

Sujets relatifs:

Leave a Replay

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