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

  FORUM HardWare.fr
  Programmation
  C

  Client socket tout simple

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Client socket tout simple

n°1504529
les gens r​oots
Jah rastafarei
Posté le 18-01-2007 à 10:55:43  profilanswer
 

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.
mood
Publicité
Posté le 18-01-2007 à 10:55:43  profilanswer
 

n°1504533
bad___day
Posté le 18-01-2007 à 11:02:23  profilanswer
 

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
n°1504537
les gens r​oots
Jah rastafarei
Posté le 18-01-2007 à 11:04:00  profilanswer
 

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.
n°1504544
Emmanuel D​elahaye
C is a sharp tool
Posté le 18-01-2007 à 11:18:47  profilanswer
 

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/
n°1504560
les gens r​oots
Jah rastafarei
Posté le 18-01-2007 à 11:41:49  profilanswer
 

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.

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

  Client socket tout simple

 

Sujets relatifs
[Résolu] Comment envoyer un fichier sur un serveur (client ftp)Java et simple BDD pour vérifier login & passwd
[C/java] Socket et threadindex multi champ vs index simple champ
Socket raw sur Pocket pcScript pour envoi de fichier par socket
Script pour envoi de fichier par socketOuvrir un lien dans le client FTP préféré ???
serveur/client[SQL/Access] problème pour une requête en apparence assez simple
Plus de sujets relatifs à : Client socket tout simple


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