Client serveur

fanch314 Messages postés 11 Date d'inscription jeudi 19 janvier 2006 Statut Membre Dernière intervention 25 juillet 2006 - 19 juil. 2006 à 13:36
xtremejames183 Messages postés 32 Date d'inscription vendredi 26 mai 2006 Statut Membre Dernière intervention 14 avril 2009 - 24 oct. 2006 à 01:22
Je que le serveur et le client échange par internet.

Le serveur ne voit pas de client connecté

Et le buffer du client contient nimporte quoi.
En gros ils ne se connecte pas.

Je pense que le probleme vient de ladresse IP ou du port...

SERVEUR:

#include <winsock2.h>//winsock.h
#include <stdio.h>
#include <stdlib.h>
#pragma comment(lib, "ws2_32.lib")//wsock32.lib
void main()
{
int sinsize;
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);//MAKEWORD(1,0)




SOCKET sock;
SOCKET csock;
SOCKADDR_IN sin;
SOCKADDR_IN csin;


sock = socket(AF_INET,SOCK_STREAM,0);
sin.sin_addr.s_addr = INADDR_ANY;//htonl(INADDR_ANY);
sin.sin_family  = AF_INET;
sin.sin_port  = htons(80);//23 ou 7000 ou 80
bind(sock, (SOCKADDR *)&sin, sizeof(sin));
listen(sock, 0);
puts("pret");


while(1)
{
sinsize = sizeof(csin);
if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
{
puts("un socket s'est connecté");
send(csock, "Hello World!\r\n", 14, 0);
}
}




puts("FIN");
}

CLIENT:
#include <winsock2.h>//winsock.h
#include <stdio.h>
#include <stdlib.h>
#pragma comment(lib, "ws2_32.lib")//wsock32.lib
void main()
{
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);//MAKEWORD(1,0)


char *buffer = new char[255];


SOCKET sock;
SOCKADDR_IN sin;
sock = socket(AF_INET,SOCK_STREAM,0);
sin.sin_addr.s_addr = inet_addr("212.234.59.105:80");//212.234.59.105
sin.sin_family  = AF_INET;
sin.sin_port  = htons(80);//6667 ou 7000 ou 80


connect(sock, (SOCKADDR *)&sin, sizeof(sin));




recv(sock, buffer, sizeof(buffer), 0);


printf("%s\n",buffer);


closesocket(sock);
WSACleanup();
puts("FIN");
system("PAUSE");
}

4 réponses

wxccxw Messages postés 755 Date d'inscription samedi 15 mai 2004 Statut Membre Dernière intervention 30 janvier 2011
19 juil. 2006 à 14:03
un truc que je ne comprends pas, c'est :
que tu a poster ton post dans la categori LINUX et que tu utilise Winsock :)
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
19 juil. 2006 à 14:13
Salut,

Comme d'hab, sans traitement/affichage d'erreur, c'est difficile de debuguer un prog.
0
Utilisateur anonyme
20 juil. 2006 à 05:24
Si recv() renvoi la valeur -1 c'est que ton prog n'est pas connecté au serveur.
et comme buffer n'est pas initialisé et qu'il recoi rien c'est normale que c'a affiche n'importe quoi( car la plage memoir qu'il lui est attribué contient ce quel est depuis avant le lancement du prog).
int verif=999;
if(connect(sock, (SOCKADDR *)&sin, sizeof(sin)))
{
  verif = recv(sock, buffer, sizeof(buffer), 0);
  printf("Connecté ou pas:%d %s\n", verif, buffer);
}
printf("Connecté ou pas: %d", verif);

MaLaDeDeDe 97one 
0
xtremejames183 Messages postés 32 Date d'inscription vendredi 26 mai 2006 Statut Membre Dernière intervention 14 avril 2009
24 oct. 2006 à 01:22
Un bon truc pour bien gerer les erreurs c evidamment d'inclure errno pour la gestion
des bonne vielles erreur:
#include <errno.h>

if(    (sock=socket(AF_INET,SOCK_STREAM,0)<0)
             perror("Socket");

if(    (host=gethostbyname(hostname)    )==NULL)
               herror("DNS"); //pour la gestion d'erreur dns

A+
0
Rejoignez-nous