Skip to content

Commit 4319386

Browse files
committed
MVP sectrans -list
1 parent 6192e98 commit 4319386

File tree

7 files changed

+66
-134
lines changed

7 files changed

+66
-134
lines changed

Client/client

-184 Bytes
Binary file not shown.

Client/client.c

Lines changed: 17 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,25 @@
11
#include <stdio.h>
22
#include <stdlib.h>
33
#include <string.h>
4-
#include <arpa/inet.h>
54
#include <unistd.h>
6-
#define SIZE 1024
5+
#include "client.h"
6+
#include "server.h"
77

8-
int sockfd;
9-
10-
void connection(){
11-
char *ip = "127.0.0.1";
12-
int port = 8080;
13-
int e;
14-
15-
struct sockaddr_in server_addr;
16-
17-
sockfd = socket(AF_INET, SOCK_STREAM, 0);
18-
if(sockfd < 0){
19-
perror("[-]Error in socket");
20-
exit(1);
21-
}
22-
printf("[+]Server socket created successfully.\n");
23-
24-
server_addr.sin_family = AF_INET;
25-
server_addr.sin_port = port;
26-
server_addr.sin_addr.s_addr = inet_addr(ip);
27-
28-
e = connect(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr));
29-
if(e == -1){
30-
perror("[-]Error in socket");
31-
exit(1);
32-
}
33-
printf("[+]Connected to Server.\n");
34-
35-
}
36-
37-
38-
void send_file(int sockfd){
39-
FILE *fp;
40-
char *filename = "test.txt";
41-
42-
fp = fopen(filename, "rb");
43-
if(fp == NULL){
44-
perror("[-]Error in reading file.");
45-
exit(1);
46-
}
47-
48-
char data[SIZE] = {0};
49-
while(fgets(data, SIZE, fp) != NULL){
50-
if(send(sockfd, data, sizeof(data), 0) == -1){
51-
perror("[-]Error in sending file.");
52-
exit(1);
8+
int main(){
9+
printf("[+] Bienvenue ! Veuiller rentrer votre commande\n");
10+
startserver(8081);
11+
while(1){
12+
char input[1024];
13+
fgets(input, sizeof(input), stdin);
14+
input[strcspn(input, "\n")] = '\0';
15+
int answer = sndmsg(input, 8080);
16+
17+
if (strcmp(input, "sectrans -list") == 0) {
18+
char msg[1024];
19+
getmsg(msg);
20+
printf("%s\n", msg);
21+
} else {
22+
printf("Commande inconnue\n");
5323
}
54-
bzero(data, SIZE);
5524
}
56-
57-
}
58-
59-
int main(){
60-
61-
connection();
62-
63-
/*while(1){
64-
65-
}*/
66-
67-
send_file(sockfd);
68-
69-
7025
}

Client/server.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
int startserver(int port);
2+
int stopserver();
3+
4+
/* read message sent by client */
5+
int getmsg(char msg_read[1024]);

Server/client.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
/* send message (maximum size: 1024 bytes) */
2+
int sndmsg(char msg[1024], int port);

Server/database/empty_file.txt

Whitespace-only changes.

Server/server

8 Bytes
Binary file not shown.

Server/server.c

Lines changed: 42 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -2,78 +2,48 @@
22
#include <stdlib.h>
33
#include <string.h>
44
#include <arpa/inet.h>
5-
6-
#define SIZE 1024
7-
8-
int sockfd, new_stock;
9-
10-
11-
void start_server(){
12-
char *ip = "127.0.0.1";
13-
int port = 8080;
14-
int e;
15-
16-
//int sockfd, new_stock;
17-
struct sockaddr_in server_addr, new_addr;
18-
socklen_t addr_size;
19-
char buffer[SIZE];
20-
21-
sockfd = socket(AF_INET, SOCK_STREAM, 0);
22-
if(sockfd < 0){
23-
perror("[-]Error in socket");
24-
exit(1);
25-
}
26-
printf("[+]Server socket created successfully.\n");
27-
28-
server_addr.sin_family = AF_INET;
29-
server_addr.sin_port = port;
30-
server_addr.sin_addr.s_addr = inet_addr(ip);
31-
32-
e = bind(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr));
33-
if(e < 0){
34-
perror("[-]Error in bind");
35-
exit(1);
36-
}
37-
printf("[+]Binding successfull.\n");
38-
39-
if(listen(sockfd, 10) == 0){
40-
printf("[+]Listening....\n");
41-
}else{
42-
perror("[-]Error in listening");
43-
exit(1);
44-
}
45-
46-
addr_size = sizeof(new_addr);
47-
new_stock = accept(sockfd, (struct sockaddr*)&new_addr, &addr_size);
48-
}
49-
50-
void write_file(int param){
51-
int n;
52-
FILE *fp;
53-
char *filename = "rcv.txt";
54-
char buffer[SIZE];
55-
56-
fp = fopen(filename, "w");
57-
if(fp == NULL){
58-
perror("[-]Error in creating file.");
59-
exit(1);
60-
}
61-
62-
while(1){
63-
n = recv(param, buffer, SIZE, 0);
64-
if(n <= 0){
65-
break;
66-
return;
67-
}
68-
fprintf(fp, "%s", buffer);
69-
bzero(buffer, SIZE);
70-
}
71-
return;
72-
}
73-
5+
#include <unistd.h>
6+
#include <dirent.h>
7+
#include <ctype.h>
8+
#include "client.h"
9+
#include "server.h"
7410

7511
int main(){
76-
77-
start_server();
78-
write_file(new_stock);
12+
startserver(8080);
13+
printf("Serveur activé...\n");
14+
15+
while(1){
16+
17+
char rcv_msg[1024];
18+
getmsg(rcv_msg);
19+
20+
printf("Message reçu :%s\n",rcv_msg);
21+
22+
if(strncmp(rcv_msg,"exit", 4) == 0){
23+
break;
24+
}
25+
else if (strncmp(rcv_msg,"sectrans -list", 14) == 0) {
26+
printf("Liste des fichiers demandée...\n");
27+
char msg[1024] = "";
28+
strcat(msg, "Liste des fichiers disponibles :\n");
29+
DIR *dir;
30+
struct dirent *entry;
31+
dir = opendir("./database");
32+
if (dir == NULL) {
33+
perror("Erreur lors de l'ouverture du répertoire");
34+
exit(EXIT_FAILURE);
35+
}
36+
while ((entry = readdir(dir)) != NULL) {
37+
if (entry->d_type == DT_REG) {
38+
strcat(msg, entry->d_name);
39+
strcat(msg, "\n");
40+
}
41+
}
42+
closedir(dir);
43+
printf("%s\n",msg);
44+
sndmsg(msg,8081);
45+
}
46+
}
47+
stopserver();
48+
printf("Fin du server....\n");
7949
}

0 commit comments

Comments
 (0)