taron_31 | Hello all,
voila j'ai voulu jeter un oeil aux linux socket en C, j'ai fait un petit code (server/client). Le server a l'air de fonctionner sans problème, mais le client n'arrive pas à debuter une connexion sur une socket : la
fonction connect() retourne une erreur, je n'ai pas trouve d'ou cela pouvaiot venir, voici mon code :
Serveur :
Code :
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <unistd.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <time.h>
- #define MAX_RECEPT 100
- int main(int argc, char* argv[])
- {
- if(argc < 2)
- {
- printf("Parameters error !\n" );
- return EXIT_FAILURE;
- }
- int socket_server, socket_client, server_len, client_len;
- struct sockaddr_in sockaddr_server, sockaddr_client;
- char buffer[MAX_RECEPT];
- time_t date;
-
- FILE* f = fopen(argv[1], "a" );
-
- if((socket_server = socket(AF_INET, SOCK_STREAM, 0)) < 0)
- {
- printf("Socket creation error !\n" );
- return EXIT_FAILURE;
- }
- sockaddr_server.sin_family = AF_INET;
- sockaddr_server.sin_port = 6667;
- sockaddr_server.sin_addr.s_addr = inet_addr("127.0.0.1" );
-
- server_len = sizeof(sockaddr_server);
- client_len = sizeof(sockaddr_client);
-
- if(bind(socket_server, (struct sockaddr*)&sockaddr_server, server_len) < 0)
- {
- printf("Socket bind error !\n" );
- return EXIT_FAILURE;
- }
-
- if(listen(socket_server, 10) < 0)
- {
- printf("Socket listen error !\n" );
- return EXIT_FAILURE;
- }
- printf("[~]Waiting connection... \n" );
- socket_client = accept(socket_server, (struct sockaddr*)&sockaddr_client, &client_len);
- printf("[~]Established connection !\n" );
-
- time(&date);
- fprintf(f, "[!]Established connection at %s\n", ctime(&date));
-
- while(1)
- {
- if(read(socket_client, &buffer, MAX_RECEPT) < 0)
- {
- printf("Socket read error !" );
- return EXIT_FAILURE;
- }
-
- printf("From client : %s\n\n", buffer);
- fprintf(f, "From client : %s\n", buffer);
- }
-
- close(socket_client);
- printf("Saving in %s\n", argv[1]);
-
- return 0;
- }
|
Client :
Code :
- #include <sys/socket.h>
- #include <sys/types.h>
- #include <netinet/in.h>
- #include <unistd.h>
- #include <stdlib.h>
- #define MAX_SEND 100
- int main()
- {
- int socket_connect, sockaddr_len;
- struct sockaddr_in sockaddr_connect;
- char buffer[MAX_SEND];
-
- if(socket_connect = socket(AF_INET, SOCK_STREAM, 0) < 0)
- {
- printf("Socket creation errror !\n" );
- return EXIT_FAILURE;
- }
-
- sockaddr_connect.sin_family = AF_INET;
- sockaddr_connect.sin_addr.s_addr = inet_addr("127.0.0.1" );
- sockaddr_connect.sin_port = 6667;
-
- sockaddr_len = sizeof(sockaddr_connect);
-
- if(connect(socket_connect, (struct sockaddr*)&sockaddr_connect, sockaddr_len) < 0)
- {
- printf("Socket connection error !\n" );
- return EXIT_FAILURE;
- }
-
- while(1)
- {
- printf("send>" );
- scanf("%s", &buffer);
- write(socket_connect, buffer, MAX_SEND);
- }
-
- close(socket_connect);
-
- return 0;
- }
|
Si vous pourriez m'aider, ce serait vraiment sympa
Bye.
PS : je suis un peu paumé aux niveaux des fichiers d'en-tête à ajouter, si il en manque oui il y'en a en trop, j'accepte vos remarques, merci. |