[C++/Sockets/Unix]

[C++/Sockets/Unix] - C++ - Programmation

Marsh Posté le 19-04-2005 à 13:10:01    

Bonjour,  
Je cherche un simple example de Client/Serveur (Sockets) en C++ sous un système Unix (Débian), pour juste envoyer un caractère vers le serveur,
Je ne trouve pas celà sur le net, je galère..
 
Merci d'avance pour votre aide,
 
Amicalement,
DiaVX

Reply

Marsh Posté le 19-04-2005 à 13:10:01   

Reply

Marsh Posté le 19-04-2005 à 13:22:01    

Tu as un exemple ici :
 
http://www.salemioche.com/outils/c_prog1.php


---------------
Slack powa | http://www.racingpneu.com
Reply

Marsh Posté le 19-04-2005 à 13:30:55    

Merci beaucoup d'avoir répondu, mais ceci est en C, il y a des petites diff' pour les déclarations je pense

Reply

Marsh Posté le 19-04-2005 à 13:35:42    

Ah oui autant pour moi.
J'avais pas fait gaffe qu'il te faut du C++.
Là tu dois avoir un client-serveur qui fonctionne. Y a plus qu'à faire les classes et y copier le code. (Et éventuellement l'adapter)


---------------
Slack powa | http://www.racingpneu.com
Reply

Marsh Posté le 20-04-2005 à 14:01:33    

justement c'est à l'adapter que je galère... je sais pas comment on les déclarent en C++, si qqu'un à un petit example (C++ sous unix...)  
 
merci

Reply

Marsh Posté le 25-04-2005 à 21:56:07    

Salut, je viens juste de coder un client/server unix avec un logguer integré au serveur :
 
Server :

Code :
  1. #include <sys/socket.h>
  2. #include <netinet/in.h>
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. #include <time.h>
  6. #define MAX_RECEPT 200
  7. int main(int argc, char* argv[])
  8. {
  9.    if(argc < 2)
  10.    {
  11.       printf("Parameters error !\n" );
  12.       return EXIT_FAILURE;
  13.    }
  14.    int socket_server, socket_client, server_len, client_len;
  15.    struct sockaddr_in sockaddr_server, sockaddr_client;
  16.    char buffer[MAX_RECEPT];
  17.    time_t date;
  18.  
  19.    FILE* f = fopen(argv[1], "a" );
  20.  
  21.    if((socket_server = socket(AF_INET, SOCK_STREAM, 0)) < 0)
  22.    {
  23.       printf("Socket creation error !\n" );
  24.       return EXIT_FAILURE;
  25.    }
  26.    sockaddr_server.sin_family = AF_INET;
  27.    sockaddr_server.sin_port = 6667;
  28.    sockaddr_server.sin_addr.s_addr = inet_addr("127.0.0.1" );
  29.  
  30.    server_len = sizeof(sockaddr_server);
  31.    client_len = sizeof(sockaddr_client);
  32.  
  33.    if(bind(socket_server, (struct sockaddr*)&sockaddr_server, server_len) < 0)
  34.    {
  35.       printf("Socket bind error !\n" );
  36.       return EXIT_FAILURE;
  37.    }
  38.  
  39.    if(listen(socket_server, 10) < 0)
  40.    {
  41.       printf("Socket listen error !\n" );
  42.       return EXIT_FAILURE;
  43.    }
  44.    printf("[~]Waiting connection... \n" );
  45.    socket_client = accept(socket_server, (struct sockaddr*)&sockaddr_client, &client_len);
  46.    printf("[~]Established connection !\n" );
  47.  
  48.    time(&date);
  49.    fprintf(f, "[!]Established connection at %s", ctime(&date));
  50.  
  51.    if(read(socket_client, &buffer, MAX_RECEPT) < 0)
  52.    {
  53.       printf("Socket read error !\n" );
  54.       return EXIT_FAILURE;
  55.    } 
  56.      
  57.    fprintf(f, "From client : %s\n", &buffer); 
  58.    printf("From client : %s\n", buffer); 
  59.  
  60.    close(socket_client);
  61.    printf("Logging in %s\n", argv[1]);
  62.  
  63.    return 0;
  64. }


 
Client :

Code :
  1. #include <sys/socket.h>
  2. #include <netinet/in.h>
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. int main()
  6. {
  7.     int socket_connect, sockaddr_len, result;
  8.     struct sockaddr_in sockaddr_connect;
  9.     char buffer[200]; 
  10.     socket_connect = socket(AF_INET, SOCK_STREAM, 0);
  11.    
  12.     if(socket_connect < 0)
  13.     {
  14.        printf("Socket creation error !\n" );
  15.        return EXIT_FAILURE;
  16.     }
  17.     sockaddr_connect.sin_family = AF_INET;
  18.     sockaddr_connect.sin_addr.s_addr = inet_addr("127.0.0.1" );
  19.     sockaddr_connect.sin_port = 6667;
  20.     sockaddr_len = sizeof(sockaddr_connect);
  21.     if(connect(socket_connect, (struct sockaddr *)&sockaddr_connect, sockaddr_len) < 0)
  22.     {
  23.        printf("Socket connection error !\n" );
  24.        return EXIT_FAILURE;
  25.     }
  26.  
  27.     printf("send>" );
  28.     fgets(buffer, sizeof(buffer), stdin); 
  29.     write(socket_connect, buffer, sizeof(buffer));
  30.     close(socket_connect);
  31.    
  32.     return 0;
  33. }


 

Citation :

$./server log.txt
[~]Waiting connection...  
[~]Established connection !
From client : Hello !
Logging in log.txt


 

Citation :

$./client
Send>Hello!


 
Désolé je n'ai pas commente la source ;(, en esperant tout de même t'avoir aidé...


Message édité par taron_31 le 25-04-2005 à 22:19:33
Reply

Sujets relatifs:

Leave a Replay

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