-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclient_old.c
138 lines (105 loc) · 3.54 KB
/
client_old.c
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/******************************************************************************/
/* Application: ... */
/******************************************************************************/
/* */
/* programme CLIENT */
/* */
/******************************************************************************/
/* */
/* Auteurs : ... */
/* */
/******************************************************************************/
#include <stdio.h>
#include <curses.h> /* Primitives de gestion d'ecran */
#include <sys/signal.h>
#include <sys/wait.h>
#include<stdlib.h>
#include "fon.h" /* primitives de la boite a outils */
#define SERVICE_DEFAUT "1111"
#define SERVEUR_DEFAUT "127.0.0.1"
void client_appli (char *serveur, char *service);
/*****************************************************************************/
/*--------------- programme client -----------------------*/
int main(int argc, char *argv[])
{
char *serveur= SERVEUR_DEFAUT; /* serveur par defaut */
char *service= SERVICE_DEFAUT; /* numero de service par defaut (no de port) */
/* Permet de passer un nombre de parametre variable a l'executable */
switch(argc)
{
case 1 : /* arguments par defaut */
printf("serveur par defaut: %s\n",serveur);
printf("service par defaut: %s\n",service);
break;
case 2 : /* serveur renseigne */
serveur=argv[1];
printf("service par defaut: %s\n",service);
break;
case 3 : /* serveur, service renseignes */
serveur=argv[1];
service=argv[2];
break;
default:
printf("Usage:client serveur(nom ou @IP) service (nom ou port) \n");
exit(1);
}
/* serveur est le nom (ou l'adresse IP) auquel le client va acceder */
/* service le numero de port sur le serveur correspondant au */
/* service desire par le client */
client_appli(serveur,service);
}
/*****************************************************************************/
void client_appli (char *serveur,char *service)
/* procedure correspondant au traitement du client de votre application */
{
pid_t pid;
int id;
char msg[255];
int socketID;
int socket_dist;
char tampon[1000];
char envoi[2000];
char localName[25+1];
char distName[25+1];
int finPartie = 1;
int nbcouleurs;
struct sockaddr_in *infoServeur;
struct sockaddr_in *infoClient;
/* locaux */
/*gethostname(localName, MAXHOSTNAMELEN);
adr_socket("0", localName, SOCK_STREAM, &infoClient);
h_bind(socket, &infoServeur);*/
socketID = h_socket(AF_INET, SOCK_STREAM);
/* distant*/
adr_socket(service, serveur, SOCK_STREAM, &infoServeur);
/*if(socketID == -1)
{
printf("la creation socket echoué\n");
exit(0);
} verification faite par adr_socket*/
h_connect(socketID, infoServeur);
/*initialisation partie */
read(socketID, tampon, sizeof(tampon));
printf("%s\n",tampon);
scanf("%s",envoi);
nbcouleurs= envoi[0] -'0';
write(socketID, envoi, sizeof(envoi));
while(finPartie) {
/* lire question */
read(socketID, tampon, sizeof(tampon));
printf("%s\n",tampon);
/* envoyer reponse */
scanf("%s",envoi);
printf("donnees envoyees: %s\n",envoi);
write(socketID, envoi, sizeof(envoi));
/* lire si gagné */
read(socketID, tampon, sizeof(tampon));
finPartie = tampon[0] - '0';
printf("Etat de la partie: %d\n",finPartie);
/* afficher reponse */
read(socketID, tampon, sizeof(tampon));
printf("Affichage reponse: %s\n",tampon);
}
h_close;
}
/*****************************************************************************/