Socket

cs_flatou Messages postés 92 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 22 février 2006 - 15 févr. 2004 à 18:46
cs_flatou Messages postés 92 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 22 février 2006 - 15 févr. 2004 à 21:14
salut
voila le code du serveur sous dos que j'ai fait :

#include <winsock2.h>
#include <stdio.h>
#include <string.h>
#pragma comment(lib, "ws2_32.lib")

SOCKET s;
SOCKET c;
SOCKET result;
sockaddr_in sin;
WSADATA wsa;

int main()
{
WSAEVENT EventRead = WSACreateEvent(); // on crée un EVENT
WSAStartup(MAKEWORD(2,0), &wsa);

s = socket(AF_INET, SOCK_STREAM, 0);

sin.sin_family = AF_INET;
sin.sin_port = htons(1000);
sin.sin_addr.S_un.S_addr = INADDR_ANY;

bind(s,(sockaddr *) &sin, sizeof(sin));
listen(s, 2);

int SinSize = sizeof(sin);

while(true)
{
c = accept(s, (sockaddr *) &sin, &SinSize);
printf("connection accepte\n");

while(1)
{
char msg[1024];
result = recv(c, msg, strlen(msg)+1, 0);

if(result == SOCKET_ERROR)
{
closesocket(c);
break;
}
else
{
printf(msg);
printf("\n");
}
}
}

return 0;
}

le serveur affiche simplement le message qu'on lui envoie. Mon probleme est que lorsque je me connecte, et que j'envoi des messages, tt fonctionne, ms lorsque je me deconnecte, le serveur affiche en boucle le dernier message envoyer.
que dois-je faire pour que mon serveur repasse en attente de connexion ?
merci d'avance

3 réponses

cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
15 févr. 2004 à 20:28
ferme le socket s et mets "bind(s,(sockaddr *) &sin, sizeof(sin)); et listen(s, 2);" au début de ta boucle while(true)
0
cs_flatou Messages postés 92 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 22 février 2006
15 févr. 2004 à 20:43
j'ai fait les modifications, mais ca donne tjr pareil :-\
0
cs_flatou Messages postés 92 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 22 février 2006
15 févr. 2004 à 21:14
j'ai resolu le probleme en mettant :
while(recv(c, msg, sizeof(msg), 0) != 0)
0
Rejoignez-nous