begin process at 2008 07 05 07:33:44
1 205 059 membres
45 nouveaux aujourd'hui
14 118 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Probleme avec les sockets [ Archives / Réseau / Internet ] (Scooper)

Probleme avec les sockets le 22/03/2005 09:03:34

Scooper
Bonjour a tous, j'ai un soucis avec l'utilisation des sockets sous UNIX AIX v3.25.
J'ai 2 programmes : 1 client et 1 serveur.
Ces 2 programmes fonctionnent bien (c'est même ceux utilisés dans de nombreux cours).
Si je lance le serveur puis le client, ca fonctionne mais si je relance le serveur puis le client une deuxième fois, le client quitte direct et si je fais un netstat, la socket utilisée n'est pas fermé, il faut attendre environ 1minute avant de pouvoir relancer ces programmes sans erreur.
Si quelqu'un pouvais m'aider j'en serais heureux.
Merci

Voici la sources du client et du serveur :


/*client*/

#include <stdio.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netdb.h>

#include <sys/stat.h>

#include <netinet/in.h>

#define PORT 6969

void main(int argc, char *argv[])

{

int ns1,nbr_car,s1,from,fromlen;

char buf[256];

struct sockaddr_in serveur;

s1 = socket(AF_INET, SOCK_STREAM,0);

serveur.sin_family = AF_INET;

serveur.sin_addr.s_addr = inet_addr("127.0.0.1");

serveur.sin_port = htons(PORT);

connect(s1,(struct sockaddr *)&serveur, sizeof(serveur));

printf("Tapez la phrase a envoyer au serveur: ");

gets(buf);

nbr_car=strlen(buf);

write(s1,buf,nbr_car);

read(s1,buf,sizeof(buf));

printf("Serveur a dit : %s \n",buf);

printf("Tapez la phrase a envoyer au serveur: ");

gets(buf);

nbr_car=strlen(buf);

write(s1,buf,nbr_car);

read(s1,buf,sizeof(buf));

printf("Serveur a dit : %s \n",buf); 

close(s1);

exit(0);

}

 


/*serveur*/

#include <stdio.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netdb.h>

#include <sys/stat.h>

#include <netinet/in.h>

#define PORT 6969

void main(void)

{

struct sockaddr_in serv, from;

int s1,ns1,nbr_car;

char buf[256];

int fromlen;

s1 = socket(AF_INET, SOCK_STREAM,0);

serv.sin_family = AF_INET;

serv.sin_addr.s_addr = htonl(INADDR_ANY);

serv.sin_port = htons(PORT);

bind(s1,(struct sockaddr *)&serv,sizeof(serv));

listen(s1,1);

fromlen=sizeof from;

ns1 = accept(s1,(struct sockaddr *)&from, &fromlen);

read(ns1,buf,sizeof(buf));

printf("Client a dit : %s \n",buf);

printf("Tapez la phrase a envoyer au client: ");

gets(buf);

write(ns1,buf,sizeof(buf));

read(ns1,buf,sizeof(buf));

printf("Client a dit : %s \n",buf);

printf("Tapez la phrase a envoyer au client: ");

gets(buf);

write(ns1,buf,sizeof(buf));

close(ns1);

close(s1);

exit(0);

}


Re : Probleme avec les sockets le 22/03/2005 16:40:52

NAVIE
Je dis peut-être une bétise mais il me semble que sous Linux tu dois aussi mettre le WSAStartup.




NAVI

Re : Probleme avec les sockets le 22/03/2005 19:16:03

Scooper
non en fait c bon, sous AIX (UNIX) c'est un systeme de sécurité :/ mais je me suis débrouillé autrement et ca fonctionne, je laisse le serveur tourner maintenant avec une boucle while(1) au niveau de l'accept et ca fonctionne :)


Classé sous : serveur, client, include, s1, buf

Participer à cet échange

Pub



Appels d'offres

Snippets en rapport

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS