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

  FORUM HardWare.fr
  Programmation
  C

  Création Serveur/Client

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Création Serveur/Client

n°2352701
erdax
Posté le 27-04-2020 à 15:51:51  profilanswer
 

Bonjour!
J'aimerais créer un serveur et client pour apprendre un peu l'utilisation des sockets.  
J'ai écris un bout de code mais lorsque je compile je n'ai ni "listen" ni "bind" qui s'affiche.
Pourriez vous m'aider?
 
Merci!
 
Code serveur:

Code :
  1. #include<unistd.h>
  2. #include <winsock2.h>
  3. #include <ws2tcpip.h>
  4. #include<stdio.h>
  5. #include<stdlib.h>
  6. #include<string.h>
  7. typedef struct User
  8. {
  9.     char nom[30];
  10.     int age;
  11. }User;
  12. int main(void)
  13. {
  14.     WSADATA WSAData;
  15.     if(WSAStartup(MAKEWORD(1, 1), &WSAData))
  16.     {
  17.        printf("WSA n'a pas pu être initialisé.\n" );
  18.     }
  19.     int socketServer = socket(AF_INET, SOCK_STREAM, 0);
  20.     struct sockaddr_in addrServer;
  21.     addrServer.sin_addr.s_addr = inet_addr("127.0.0.1" );
  22.     addrServer.sin_family = AF_INET;
  23.     addrServer.sin_port = htons(30000);
  24.     bind(socketServer, (const struct sockaddr *)&addrServer, sizeof(addrServer));
  25.     printf("bind: %s\n",socketServer);
  26.     listen(socketServer,5);
  27.     printf("listen\n" );
  28.     struct sockaddr_in addrClient;
  29.     socklen_t csize = sizeof(addrClient);
  30.     int socketClient = accept(socketServer, (struct sockaddr *)&addrClient, &csize);
  31.     printf("accept\n" );
  32.     printf("client: %d\n", socketClient);
  33.     User user = {
  34.         .nom = "Arthur",
  35.         .age = 19
  36.     };
  37.     close(socketClient);
  38.     close(socketServer);
  39.     printf("Close\n" );
  40.     WSACleanup();
  41.     return 0;
  42. }

mood
Publicité
Posté le 27-04-2020 à 15:51:51  profilanswer
 

n°2352857
xilebo
noone
Posté le 29-04-2020 à 08:29:49  profilanswer
 

C'est pas quand tu compiles mais quand tu exécutes, c'est normal que tu ne vois rien quand tu compiles :o
 
La ligne 29 , c'est %d et pas %s pour afficher la valeur de socket.
 
ligne 32, tu devrais voir s'afficher listen.
 
ligne 36 : c est un appel bloquant, il débloquera à la première connexion.
 
Sous windows, les printf s'affichent uniquement dans une console, tu ne les verras pas dans un debugger type visual.

n°2352916
erdax
Posté le 29-04-2020 à 17:15:28  profilanswer
 

Merci pour ta réponse. J'ai carrément oublié de préciser que j'étais sur windows et que je code avec CodeBlocks.
Du coup yes j'ai corrigé le %d et j'ai également rajouté un memset(&addrServer, 0, sizeof (addrServer)); entre la ligne 23 et 24
et également :
setbuf(stdout, NULL);
setbuf(stderr, NULL);
 
Au début du main et ça fonctionne parfaitement maintenant.


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

  Création Serveur/Client

 

Sujets relatifs
[POSTGRESQL] WTF création unique impossibeAffichage photos sur serveur web
[POWERSHELL]Creation fichier ps1Mono Develop C# , création de class
[latex] Création de liste dans un templateServeur GLPI
Lire une vidéo depuis un serveur sur un site WebLe meilleur client pour une application professionnelle
Transfert FTP avec création de répertoireCréer un bot qui travaille 24h/24 sur un serveur
Plus de sujets relatifs à : Création Serveur/Client


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