Si j'ai bien compris le fonctionnement d'inetd ...
inetd fait le travail reseau pour toi
tu declare ton service et le port associe et voila
lorsqu'une demande de connection arrive inetd accepte la connection
il se forke et duplique le descripteur de la socket sur STDIN STDOUT
et STDERR afin que lors de l'appel de la primitive exec pour executer
ton programme la socket ne soit pas fermee.
Donc dans ton programme tu n'a rien a faire, tu lit se qui vient de la
socket sur STDIN et tu ecrit vers la socket sur STDOUT
j'espere avoir repondu
-----Message d'origine-----
De : Nico [mailto:[EMAIL PROTECTED]]
Envoy� : jeudi 7 septembre 2000 14:53
� : [EMAIL PROTECTED]
Objet : [Confirme] demande d'aide pour prog socket
Importance : Haute
Bonjour,
Je viens de me lancer dans la prog socket.
J'ai alors test� mon programme en le lancant dans une console mais lorsque
je l'ajoute dans le service inetd celui ci ne marche plus?
Les lignes que j'ai ajout� dans inetd.conf et services sont :
pserver stream tcp wait root /socket
et........
pserver 973/tcp # Mon petit programme...
les sources du serveur:
.......
int main()
{
int server_sockfd, client_sockfd;
int server_len, client_len;
struct sockaddr_in server_address;
struct sockaddr_in client_address;
server_sockfd = socket(AF_INET, SOCK_STREAM, 0);
server_address.sin_family = AF_INET;
server_address.sin_addr.s_addr = htonl(INADDR_ANY);
server_address.sin_port = htons(973);
server_len = sizeof(server_address);
bind(server_sockfd, (struct sockaddr *)&server_address, server_len);
listen(server_sockfd, 5);
char ch[50];
printf("serveur en attente\n");
client_len = sizeof(client_address);
client_sockfd = accept(server_sockfd,(struct sockaddr
*)&client_address, &client_len);
read(client_sockfd, &ch, 50);
.......
.......
write(client_sockfd, "ok", 50);
close(client_sockfd);
return (0);
}
et celles du client...
int main(int argc,char *argv[])
{
int sockfd;
int len;
struct sockaddr_in address;
int result;
char ch[50] ;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
address.sin_family = AF_INET;
address.sin_addr.s_addr = inet_addr("x.x.x.x");
address.sin_port = htons(973);
len = sizeof(address);
result = connect(sockfd, (struct sockaddr *)&address, len);
if(result == -1) {
perror("erreur !!!");
}
read(sockfd, &ch, 50);
.....
.....
close(sockfd);
return (0);
}
Pouvez vous me dire ce qui cloche ????
Aurai je mal configur� Inetd ????
Je vous remercie d'avance de votre aide.