Skip to content
Snippets Groups Projects
Commit 1072a476 authored by Romain Gabet's avatar Romain Gabet :speech_balloon:
Browse files

bzzz bzzz

parent 2e6064f2
Branches
Tags 07-fdopen
No related merge requests found
File deleted
File deleted
......@@ -6,14 +6,28 @@
#include <sys/wait.h>
#include <stdlib.h>
#include "client.h"
int traitementClient(int socket_client){
/* On peut maintenant dialoguer avec le client */
const char *message_bienvenue = "Bonjour, bienvenue sur mon serveur\nExcogitatum est super his, ut homines quidam ignoti, vilitate ipsa parum cavendi ad colligendos rumores per Antiochiae latera cuncta destinarentur relaturi quae audirent. hi peragranter et dissimulanter honoratorum circulis adsistendo pervadendoque divites domus egentium habitu quicquid noscere poterant vel audire latenter intromissi per posticas in regiam nuntiabant, id observantes conspiratione concordi, ut fingerent quaedam et cognita duplicarent in peius, laudes vero supprimerent Caesaris, quas invitis conpluribus formido malorum inpendentium exprimebat.Sed fruatur sane hoc solacio atque hanc insignem ignominiam, quoniam uni praeter se inusta sit, putet esse leviorem, dum modo, cuius exemplo se consolatur, eius exitum expectet, praesertim cum in Albucio nec Pisonis libidines nec audacia Gabini fuerit ac tamen hac una plaga conciderit, ignominia senatus.Post emensos insuperabilis expeditionis eventus languentibus partium animis, quas periculorum varietas fregerat et laborum, nondum tubarum cessante clangore vel milite locato per stationes hibernas, fortunae saevientis procellae tempestates alias rebus infudere communibus per multa illa et dira facinora Caesaris Galli, qui ex squalore imo miseriarum in aetatis adultae primitiis ad principale culmen insperato saltu provectus ultra terminos potestatis delatae procurrens asperitate nimia cuncta foedabat. propinquitate enim regiae stirpis gentilitateque etiam tum Constantini nominis efferebatur in fastus, si plus valuisset, ausurus hostilia in auctorem suae felicitatis, ut videbatur.";
/* On peut maintenant dialoguer avec le client */
//const char *message_bienvenue = "Bonjour, bienvenue sur mon serveur\nExcogitatum est super his, ut homines quidam ignoti, vilitate ipsa parum cavendi ad colligendos rumores per Antiochiae latera cuncta destinarentur relaturi quae audirent. hi peragranter et dissimulanter honoratorum circulis adsistendo pervadendoque divites domus egentium habitu quicquid noscere poterant vel audire latenter intromissi per posticas in regiam nuntiabant, id observantes conspiratione concordi, ut fingerent quaedam et cognita duplicarent in peius, laudes vero supprimerent Caesaris, quas invitis conpluribus formido malorum inpendentium exprimebat.Sed fruatur sane hoc solacio atque hanc insignem ignominiam, quoniam uni praeter se inusta sit, putet esse leviorem, dum modo, cuius exemplo se consolatur, eius exitum expectet, praesertim cum in Albucio nec Pisonis libidines nec audacia Gabini fuerit ac tamen hac una plaga conciderit, ignominia senatus.Post emensos insuperabilis expeditionis eventus languentibus partium animis, quas periculorum varietas fregerat et laborum, nondum tubarum cessante clangore vel milite locato per stationes hibernas, fortunae saevientis procellae tempestates alias rebus infudere communibus per multa illa et dira facinora Caesaris Galli, qui ex squalore imo miseriarum in aetatis adultae primitiis ad principale culmen insperato saltu provectus ultra terminos potestatis delatae procurrens asperitate nimia cuncta foedabat. propinquitate enim regiae stirpis gentilitateque etiam tum Constantini nominis efferebatur in fastus, si plus valuisset, ausurus hostilia in auctorem suae felicitatis, ut videbatur.";
int status = 1;
while(status>0){
status = write(socket_client, message_bienvenue, strlen(message_bienvenue));
sleep(1);
// int status = 1;
//while(status>0){
char str[8000];
FILE *fd;
//status = write(socket_client, message_bienvenue, strlen(message_bienvenue));
fd = fdopen(socket_client, "a+");
fprintf(fd,"Bienvenue client\n");
if(fd == NULL) {
perror("Error opening file");
exit(1);
}
//printf("test avant while\n");
while(!feof(fd) && fgets(str,8000,fd) != NULL){
/* writing content to stdout */
fprintf(fd,"<Notre Serveur> %s",str);
fflush(fd);
}
fclose(fd);
return 0;
}
#include <string.h>
#include <unistd.h>
#include <stdio.h>
#include "socket.h"
#include <netinet/in.h>
#include <sys/wait.h>
#include <stdlib.h>
#include "client.h"
int traitementClient(int socket_client){
/* On peut maintenant dialoguer avec le client */
//const char *message_bienvenue = "Bonjour, bienvenue sur mon serveur\nExcogitatum est super his, ut homines quidam ignoti, vilitate ipsa parum cavendi ad colligendos rumores per Antiochiae latera cuncta destinarentur relaturi quae audirent. hi peragranter et dissimulanter honoratorum circulis adsistendo pervadendoque divites domus egentium habitu quicquid noscere poterant vel audire latenter intromissi per posticas in regiam nuntiabant, id observantes conspiratione concordi, ut fingerent quaedam et cognita duplicarent in peius, laudes vero supprimerent Caesaris, quas invitis conpluribus formido malorum inpendentium exprimebat.Sed fruatur sane hoc solacio atque hanc insignem ignominiam, quoniam uni praeter se inusta sit, putet esse leviorem, dum modo, cuius exemplo se consolatur, eius exitum expectet, praesertim cum in Albucio nec Pisonis libidines nec audacia Gabini fuerit ac tamen hac una plaga conciderit, ignominia senatus.Post emensos insuperabilis expeditionis eventus languentibus partium animis, quas periculorum varietas fregerat et laborum, nondum tubarum cessante clangore vel milite locato per stationes hibernas, fortunae saevientis procellae tempestates alias rebus infudere communibus per multa illa et dira facinora Caesaris Galli, qui ex squalore imo miseriarum in aetatis adultae primitiis ad principale culmen insperato saltu provectus ultra terminos potestatis delatae procurrens asperitate nimia cuncta foedabat. propinquitate enim regiae stirpis gentilitateque etiam tum Constantini nominis efferebatur in fastus, si plus valuisset, ausurus hostilia in auctorem suae felicitatis, ut videbatur.";
// int status = 1;
//while(status>0){
char str[180];
FILE *fd;
//status = write(socket_client, message_bienvenue, strlen(message_bienvenue));
fd = fdopen(socket_client, "a+");
if(fd == NULL) {
perror("Error opening file");
return(-1);
}
if( fgets(str, 60, fd)!=NULL ) {
/* writing content to stdout */
puts(str);
}
printf("<leNomDuServ>");
fprintf(fd,"test");
fclose(fd);
//sleep(1);
//}
return 0;
}
No preview for this file type
#include <stdio.h>
#include <string.h>
#include <signal.h>
#include "socket.h"
#include <sys/types.h>
#include <sys/wait.h>
int status;
void traitement_signal(int sig) {
printf("Signal %d reçu\n", sig);
int pid;
while((pid = waitpid(-1,&status,WNOHANG))>0){printf("pid terminated %d\n",pid);} //-1 n'importe quel proccessus
}
void initialiser_signaux(void) {
if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) {
perror("signal");
}
struct sigaction sa;
sa.sa_handler = traitement_signal;
sigemptyset(&sa.sa_mask);
sa.sa_flags = SA_RESTART;
if (sigaction(SIGCHLD, &sa, NULL) == -1) {
perror("sigaction(SIGCHLD)");
}
}
int main(int argc, char **argv) {
/* Arnold Robbins in the LJ of February '95, describing RCS */
if (argc > 1 && strcmp(argv[1], "-advice") == 0) {
printf("Don't Panic!\n");
return 42;
}
initialiser_signaux();
printf("Need an advice?\n");
creer_serveur(8080);
return 0;
}
No preview for this file type
......@@ -64,7 +64,7 @@ int creer_serveur(int port){
//traitement final
traitementClient(socket_client);
printf("fin du client\n");
close(socket_client);
//close(socket_client);
exit(0);
}
}
......
#include <string.h>
#include <unistd.h>
#include <stdio.h>
#include "socket.h"
#include <netinet/in.h>
#include <sys/wait.h>
#include <stdlib.h>
int creer_serveur(int port){
//socket
int socket_serveur;
socket_serveur = socket(AF_INET, SOCK_STREAM, 0);
if (socket_serveur == -1) {
/* traitement de l'erreur */
perror("socket_serveur");
exit(1);
}
int optval = 1;
if (setsockopt(socket_serveur, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(int)) == -1) {
perror("Can not set SO_REUSEADDR option");
exit(1);
}
/*Utilisation de la socket serveur */
//bind
struct sockaddr_in saddr;
saddr.sin_family = AF_INET; /* Socket ipv4 */
saddr.sin_port = htons(port); /* Port d'écoute */
saddr.sin_addr.s_addr = INADDR_ANY; /* écoute sur toutes les interfaces */
if (bind(socket_serveur, (struct sockaddr *)&saddr, sizeof(saddr)) == -1){
perror("bind socker_serveur");
/* traitement de l'erreur */
exit(1);
}
//listen
if (listen(socket_serveur, 10) == -1) {
perror("listen socket_serveur");
/* traitement d'erreur */
exit(1);
}
//decouper ici ---
int socket_client;
while(1){
socket_client = accept(socket_serveur, NULL, NULL);
if (socket_client == -1) {
perror("accept");
/* traitement d'erreur */
exit(1);
}
int pid = fork();
if(pid == -1){
perror("fork fail");
exit(1);
}else if(pid > 0) {
//close(socket_client); fait une erreur si on le met
}else{
/* On peut maintenant dialoguer avec le client */
const char *message_bienvenue = "Bonjour, bienvenue sur mon serveur\nExcogitatum est super his, ut homines quidam ignoti, vilitate ipsa parum cavendi ad colligendos rumores per Antiochiae latera cuncta destinarentur relaturi quae audirent. hi peragranter et dissimulanter honoratorum circulis adsistendo pervadendoque divites domus egentium habitu quicquid noscere poterant vel audire latenter intromissi per posticas in regiam nuntiabant, id observantes conspiratione concordi, ut fingerent quaedam et cognita duplicarent in peius, laudes vero supprimerent Caesaris, quas invitis conpluribus formido malorum inpendentium exprimebat.Sed fruatur sane hoc solacio atque hanc insignem ignominiam, quoniam uni praeter se inusta sit, putet esse leviorem, dum modo, cuius exemplo se consolatur, eius exitum expectet, praesertim cum in Albucio nec Pisonis libidines nec audacia Gabini fuerit ac tamen hac una plaga conciderit, ignominia senatus.Post emensos insuperabilis expeditionis eventus languentibus partium animis, quas periculorum varietas fregerat et laborum, nondum tubarum cessante clangore vel milite locato per stationes hibernas, fortunae saevientis procellae tempestates alias rebus infudere communibus per multa illa et dira facinora Caesaris Galli, qui ex squalore imo miseriarum in aetatis adultae primitiis ad principale culmen insperato saltu provectus ultra terminos potestatis delatae procurrens asperitate nimia cuncta foedabat. propinquitate enim regiae stirpis gentilitateque etiam tum Constantini nominis efferebatur in fastus, si plus valuisset, ausurus hostilia in auctorem suae felicitatis, ut videbatur.";
while(1){
write(socket_client, message_bienvenue, strlen(message_bienvenue));
sleep(1);
}
close(socket_client);
exit(0);
}
}
return 0;
}
#include <string.h>
#include <unistd.h>
#include <stdio.h>
#include "socket.h"
#include <netinet/in.h>
#include <sys/wait.h>
#include <stdlib.h>
int creer_serveur(int port){
//socket
int socket_serveur;
socket_serveur = socket(AF_INET, SOCK_STREAM, 0);
if (socket_serveur == -1) {
/* traitement de l'erreur */
perror("socket_serveur");
exit(1);
}
int optval = 1;
if (setsockopt(socket_serveur, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(int)) == -1) {
perror("Can not set SO_REUSEADDR option");
exit(1);
}
/*Utilisation de la socket serveur */
//bind
struct sockaddr_in saddr;
saddr.sin_family = AF_INET; /* Socket ipv4 */
saddr.sin_port = htons(port); /* Port d'écoute */
saddr.sin_addr.s_addr = INADDR_ANY; /* écoute sur toutes les interfaces */
if (bind(socket_serveur, (struct sockaddr *)&saddr, sizeof(saddr)) == -1){
perror("bind socker_serveur");
/* traitement de l'erreur */
exit(1);
}
//listen
if (listen(socket_serveur, 10) == -1) {
perror("listen socket_serveur");
/* traitement d'erreur */
exit(1);
}
//decouper ici ---
int socket_client;
while(1){
socket_client = accept(socket_serveur, NULL, NULL);
if (socket_client == -1) {
perror("accept");
/* traitement d'erreur */
exit(1);
}
int pid = fork();
if(pid == -1){
perror("fork fail");
exit(1);
}else if(pid > 0) {
//close(socket_client); fait une erreur si on le met
}else{ // à déplacer ailleurs pour une meilleure lisibilité
/* On peut maintenant dialoguer avec le client */
const char *message_bienvenue = "Bonjour, bienvenue sur mon serveur\nExcogitatum est super his, ut homines quidam ignoti, vilitate ipsa parum cavendi ad colligendos rumores per Antiochiae latera cuncta destinarentur relaturi quae audirent. hi peragranter et dissimulanter honoratorum circulis adsistendo pervadendoque divites domus egentium habitu quicquid noscere poterant vel audire latenter intromissi per posticas in regiam nuntiabant, id observantes conspiratione concordi, ut fingerent quaedam et cognita duplicarent in peius, laudes vero supprimerent Caesaris, quas invitis conpluribus formido malorum inpendentium exprimebat.Sed fruatur sane hoc solacio atque hanc insignem ignominiam, quoniam uni praeter se inusta sit, putet esse leviorem, dum modo, cuius exemplo se consolatur, eius exitum expectet, praesertim cum in Albucio nec Pisonis libidines nec audacia Gabini fuerit ac tamen hac una plaga conciderit, ignominia senatus.Post emensos insuperabilis expeditionis eventus languentibus partium animis, quas periculorum varietas fregerat et laborum, nondum tubarum cessante clangore vel milite locato per stationes hibernas, fortunae saevientis procellae tempestates alias rebus infudere communibus per multa illa et dira facinora Caesaris Galli, qui ex squalore imo miseriarum in aetatis adultae primitiis ad principale culmen insperato saltu provectus ultra terminos potestatis delatae procurrens asperitate nimia cuncta foedabat. propinquitate enim regiae stirpis gentilitateque etiam tum Constantini nominis efferebatur in fastus, si plus valuisset, ausurus hostilia in auctorem suae felicitatis, ut videbatur.";
int status = 1;
while(status>0){
status = write(socket_client, message_bienvenue, strlen(message_bienvenue));
sleep(1);
} //traitement final
printf("fin du client\n");
close(socket_client);
exit(0);
}
}
return 0;
}
#include <string.h>
#include <unistd.h>
#include <stdio.h>
#include "socket.h"
#include <netinet/in.h>
#include <sys/wait.h>
#include <stdlib.h>
#include "client.h"
int creer_serveur(int port){
//socket
int socket_serveur;
socket_serveur = socket(AF_INET, SOCK_STREAM, 0);
if (socket_serveur == -1) {
/* traitement de l'erreur */
perror("socket_serveur");
exit(1);
}
int optval = 1;
if (setsockopt(socket_serveur, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(int)) == -1) {
perror("Can not set SO_REUSEADDR option");
exit(1);
}
/*Utilisation de la socket serveur */
//bind
struct sockaddr_in saddr;
saddr.sin_family = AF_INET; /* Socket ipv4 */
saddr.sin_port = htons(port); /* Port d'écoute */
saddr.sin_addr.s_addr = INADDR_ANY; /* écoute sur toutes les interfaces */
if (bind(socket_serveur, (struct sockaddr *)&saddr, sizeof(saddr)) == -1){
perror("bind socker_serveur");
/* traitement de l'erreur */
exit(1);
}
//listen
if (listen(socket_serveur, 10) == -1) {
perror("listen socket_serveur");
/* traitement d'erreur */
exit(1);
}
//decouper ici ---
int socket_client;
while(1){
socket_client = accept(socket_serveur, NULL, NULL);
if (socket_client == -1) {
perror("accept");
/* traitement d'erreur */
exit(1);
}
int pid = fork();
if(pid == -1){
perror("fork fail");
exit(1);
}else if(pid > 0) {
//close(socket_client); fait une erreur si on le met
}else{ // à déplacer ailleurs pour une meilleure lisibilité
//traitement final
traitementClient(socket_client);
printf("fin du client\n");
close(socket_client);
exit(0);
}
}
return 0;
}
No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment