1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <errno.h>
#define MAX_RECEPT 100
int main(int argc, char* argv[])
{
int socket_server, socket_client, server_len, rd;
socklen_t client_len;
struct sockaddr_in sockaddr_server, sockaddr_client;
char buffer[MAX_RECEPT];
time_t date;
FILE* f = fopen(argv[1], "a" );
/* Test d'ouverture */
if(f==NULL) {
fprintf(stderr, "Probleme d'ouverture du fichier\n");
return EXIT_FAILURE;
}
if(argc < 2)
{
printf("Parameters error !\n" );
return EXIT_FAILURE;
}
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 = htons(6668);
sockaddr_server.sin_addr.s_addr = INADDR_ANY;
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" );
printf("%d\n",errno);
perror("erreur :");
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);
if(socket_client == -1) {
fprintf(stderr, "Problem with the accept\n");
return EXIT_FAILURE;
}
printf("[~]Established connection !\n" );
time(&date);
fprintf(f, "[!]Established connection at %s\n", ctime(&date));
while(1) {
rd = read(socket_client, &buffer, MAX_RECEPT);
if(rd < 0) {
printf("Socket read error !" );
return EXIT_FAILURE;
}
if(rd == 0) {
printf("Socket closed\n");
break;
}
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 EXIT_SUCCESS;
} |
Partager