à vos sockets, prêt, GO
Bon voila les gars j'ai enfin pu réaliser un client et un serveur en C++
(win 32 console application), mais j'ai un petit prob ...
Quand le client se connecte au serveur ce dernier envoie le
message "Hello BB!"; jusqu'à ici c'est bon. A son tour le client veut
saluer le serveur en lui envoyant un message "Hello AA" au niveau du serveur
il ne s'affiche rien. je ne sais pas est ce que le client n'envoie pas
le message ou le serveur ne la reçoit pas.
svp aidez-moi en toute urgence.
de la discussion jaillit la lumière.
//voici code source client :
#include <winsock2.h>
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
#pragma comment(lib, "ws2_32.lib")
void main(int argc,char **argv)
{
if (argc == 3)
{
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKET sock;
SOCKADDR_IN sin;
char *buffer = new char[50];
hostent *serveur;
serveur = new hostent;
sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_addr.s_addr = inet_addr(argv[1]);
//sin.sin_addr = *(struct in_addr *) serveur->h_addr;
sin.sin_family = AF_INET;
sin.sin_port = htons(atoi(argv[2]));
if ( connect(sock, (SOCKADDR *)&sin, sizeof(sin)) >= 0)
{cout<<"Connection established!"<<endl;
int ssin = sizeof(sin);
recvfrom(sock,buffer,14*sizeof(buffer),0,(SOCKADDR *)&sin,&ssin);
cout<<"Connection on : "<<inet_ntoa(sin.sin_addr)<<endl;
cout<<buffer<<endl; //ici le message du serveur s'affiche sur le client
send (sock,"Hello AA!",14,0); //messsage envoyé au serveur
}
// en cas d'échec de connexion
else cout<<"Connection failure!"<<endl;
}
else
{
cout<<"invalid number of parameters!"<<endl;
exit(0);
}
}
//code source serveur
include <winsock2.h>
#include <string.h>
#include <iostream.h>
#include <stdlib.h>
#pragma comment(lib, "ws2_32.lib")
void main()
{
char *buffer = new char[50];
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKET sock;
SOCKET csock;
SOCKADDR_IN sin;
SOCKADDR_IN csin;
sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_addr.s_addr = htonl(INADDR_ANY);
sin.sin_family = AF_INET;
sin.sin_port = htons(33);
bind(sock, (SOCKADDR *)&sin, sizeof(sin));
listen(sock, 0);
while(1)
{
int sinsize = sizeof(csin);
if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
{
send(csock, "Hello BB!", 14, 0); //message envoyé au client
}
int ssin = sizeof(csin);
recvfrom(csock,buffer,14*sizeof(buffer),0,(SOCKADDR *)&csin,&ssin);
cout<<buffer<<endl; //EN PRINCIPE LE SERVEUR AFFICHE LE MESSAGE DU
//CLIENT, MAIS IL N'AFFICHE RIEN !!???!!
}
}