Probleme boucles mutliple avec les sockets

Signaler
Messages postés
23
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
24 août 2008
-
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
-
Bonjour a tous voila j'ai pa le choix,deja une semaine que je mord la langue pour trouver dou vient mon probleme mais rien y fait suit obliger de farie appelle a vous.Bon voila j'ai realiser un debut de code qui met un serveur en ecoute sur un port celui si "balance" cmd.exe sur une socket et qui  le client peut ainsi interagir sur le cmd.exe a distance bref voici mon debut de code:

#include <stdio.h>
#include <stdlib.h>
#include<winsock2.h>


 


int main(int argc, char *argv[])
{
char buffer[1000];
fgets(buffer,sizeof buffer,pp);
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0),&WSAData);
SOCKET sock;
SOCKET csock;
SOCKADDR_IN sin;
SOCKADDR_IN csin;
sin.sin_addr.s_addr = htonl(INADDR_ANY);
sin.sin_family  = AF_INET;
sin.sin_port  = htons(23);
sock = socket(AF_INET,SOCK_STREAM,0);
bind(sock, (SOCKADDR *)&sin, sizeof(sin));
listen(sock, 0);
int val = 0;
FILE *pp;
pp=popen("cmd.exe","r");
while(fgets!=NULL)
{
fgets(buffer,sizeof buffer,pp);
}




while(1)
{
    
int sinsize = sizeof(csin);
if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
{


 


send(csock,buffer,sizeof buffer,0);







}
}
la compilation marche tre bien le probleme et que avec ma boucle while sur fgets mon serveur ne marche pas pas de connection et en revanche si j'enleve cette boucle tout fonctionne si ce n'est que mon cmd.exe et a moitie lu.
Si quelqu'un pouvait m'aporter sons aide ou une explication ce cerai cool merci d'avance a vous.

1 réponse

Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
while(fgets!=NULL)
{
fgets(buffer,sizeof buffer,pp);
}

Euh y a rien d'anormal là?
fgets fonction et non pas variable

void* pResult=NULL;
do
{
pResult=fgets(buffer,sizeof buffer,pp);
}while(fgets!=NULL);

cela dit ça compile car fgets écrit tout seul correspond à une adresse, donc comparable à des entiers.