mamstyle
Messages postés6Date d'inscriptionlundi 22 janvier 2007StatutMembreDernière intervention29 avril 2007
-
27 avril 2007 à 22:44
mamstyle
Messages postés6Date d'inscriptionlundi 22 janvier 2007StatutMembreDernière intervention29 avril 2007
-
29 avril 2007 à 10:24
j'utilise actuellement des sockets dans mon projet informatique .je cree actuellement un serveur afin de recevoir des caractères dans un SetdlgitemText(j'utilise un mfc) .mais j'ai des problemes lorsque je lance mon programme .je lance d'abord le serveur et ensuite le client mais dès que je le lance il s'arrete subitement .je me demande si mon probleme ne vient pas de mon serveur et je voudrai avoir de l'aide pour regler ce souci merci .
mamstyle
Messages postés6Date d'inscriptionlundi 22 janvier 2007StatutMembreDernière intervention29 avril 2007 29 avril 2007 à 10:24
Franchement je ne sais si je dois utiliser des sockets asynchrones ou synchrones.je n'ai pas crée une classe hérité.j'ai mon code si vous vouez m'aider .je l'ai codé en une seule fonction .de plus je suis un débutant dans les sockets .voici le code qui provient d'un programme mfc .
void CserveurtcpDlg::Recevoir(void)
{
WSADATA wsa;
WSAStartup(MAKEWORD(2,0),&wsa);//MAKEWORD dit qu'on utilise la version 2 de winsock
SOCKET server;//Le socket qui servira à écouter sur un port
SOCKET sock;//le socket qui servira à communiquer
SOCKADDR_IN sinserv; //parametres pour server
SOCKADDR_IN sin; //parametres pour sock
//printf("TCP connection maker par vbnul\n\n");
//estimez vous heureux que je foute pas de copyright ;)
//system("TITLE TCP Connection Maker (Version server)");
//fo avouer que c'est plus joli
int port= 8888;
//printf("Port : ");//On demande juste le port, pas besoin d'ip on est sur un server
//scanf("%i",&port);
sinserv.sin_family=AF_INET; //Je ne connais pas d'autres familles
sinserv.sin_addr.s_addr=INADDR_ANY;//Pas besoin d'ip pour le server
sinserv.sin_port=htons(port);
server=socket(AF_INET,SOCK_STREAM,0);//On construit le server
//SOCK_STREAM pour le TCP
bind(server,(SOCKADDR*)&sinserv,sizeof(sinserv));
//On lie les parametres du socket avec le socket lui meme
listen(server,0);//On se met à écouter avec server, 0 pour n'accepter qu'une seule connection
char buffer[50]="";//Pour stocker les messages
int sinsize;//contiendrz la taille de sin
int err=0;//pour détecter si la connection est toujours valide
while(1)
{
sinsize=sizeof(sin);
if((sock=accept(server,(SOCKADDR*)&sin,&sinsize))!=INVALID_SOCKET)
{//accept : accepte n'importe quelle connection
//Si le socket et valide(si qqn a bien demandé une connection) alors on y va :
while(err>-1)
{
memset(buffer,0,sizeof(buffer));//Ici, c'est la procédure pour envoyer
//err=scanf("%s",buffer);
send(sock,buffer,sizeof(buffer),0);
memset(buffer,0,sizeof(buffer));//Et la, celle pour recevoir
recv(sock,buffer,sizeof(buffer),0);
SetDlgItemText(IDC_EDIT1,buffer);
///printf("%s\n",buffer);
}
}
else
{
MessageBox("Erreur");
}
}
WSACleanup();
}
je ne sais qu'il faut faire pour que le serveur reçoive les caractères.j'espere que j'obtiendrai de l'aide .merci bcp