Connexion serveur client réseau

matad0r Messages postés 44 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 31 octobre 2010 - 4 oct. 2008 à 18:45
matad0r Messages postés 44 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 31 octobre 2010 - 5 oct. 2008 à 19:43
Bonjour ! Ceci est mon premier post ! Voilà mon problème : j'ai créer deux applications, une cliente et une serveur. Mais le problème est que elle ne fonctionne pas ^^. La connexion ne se fait pas ou bien elle se fait mais je ne le voit pas.

Code serveur :

#include <stdio.h>
#include <stdlib.h>
#include <winsock.h>
#pragma comment(lib, "wsock32.lib")

int main(int argc, char *argv[])
{

char port;
printf(" Bienvenue ! \nNumero du port a ouvrir : ");

WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);

scanf("%i", &port);

SOCKET sock;
SOCKADDR_IN sin;
sin.sin_addr.s_addr = inet_addr(INADDR_ANY);
sin.sin_family = AF_INET;
sin.sin_port = htons(port);
sock = socket(AF_INET,SOCK_STREAM, 0);
bind(sock, (SOCKADDR *)&sin, sizeof(sin));

printf("Ecoute...\n");

listen(sock, 0);
int val = 0;
while(1)
{
val = accept(sock, (SOCKADDR *)&sin, sizeof(sin));
if(val != INVALID_SOCKET)
{
printf("Quelqu'un est connecte !");
}
}
system("PAUSE");


return 0;
}

Et code client :

#include <stdio.h>
#include <stdlib.h>
#include <winsock.h>
#pragma comment(lib, "wsock32.lib")

int main(int argc, char *argv[])
{

printf(" Bienvenue ! \nAdresse IP distante : ");

WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);

char ip[15];
scanf("%s", &ip);

long port;
printf("Port distant ouvert : ");
scanf("%i", &port);

SOCKET sock;
SOCKADDR_IN sin;
sin.sin_addr.s_addr = inet_addr(ip);
sin.sin_family = AF_INET;
sin.sin_port = htons(port);
sock = socket(AF_INET,SOCK_STREAM, 0);
bind(sock, (SOCKADDR *)&sin, sizeof(sin));

if(connect(sock,(SOCKADDR*)&sin,sizeof(sin)))
{
printf("La connection a echoue... La connexion a ete bloquee par un Par-Feu ou a ete\nrefusee =(\n");

system("PAUSE");
exit(0);

}

connect(sock, (SOCKADDR *)&sin, sizeof(sin));
printf("Connecte ! Le serveur a accepte la connexion...\n");
system("PAUSE");


return 0;
}

Ce qui se passe est que le serveur n'affiche pas "Quelqu'un est connecté !" et il ne se passe rien, au bout d'un moment sur le client le message apparait : "La connexion à échoué... et patati et patata".
Merci de votre aise =)

2 réponses

matad0r Messages postés 44 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 31 octobre 2010
5 oct. 2008 à 12:26
En fait j'ai rectifié le problème mais cette fois j'en ai un autre ^^. J'arrive a connecter les deux applis => Quand je met sur écoute un port et que je me connecte dessus avec le client le Par-Feu me dit que "client.exe" tente d'établir une connexion avec l'ip (192.168.*.*** : le port en que j'ai choisi en l'occurence 10 ) et sur l'autre PC le Par-Feu me dit que une application essaye de communiquer avec "serveur.exe" ( 192.168.*.*** : et un port totalement différent de celui que j'ai choisi sur le client ! ) Quand je clique sur ok le client me dit qu'il s'est bien connecté mais sur le serveur : RIEN. Toujours le message "Ecoute...". Merci d'avance ! =)
0
matad0r Messages postés 44 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 31 octobre 2010
5 oct. 2008 à 19:43
J'ai trouvé une erreur dans mon code serveur => au lieu de "inet_addr(INADDR_ANY)" c'est mieux de mettre "htonl(INADDR_ANY)", ne me demandez pas pourquoi ^^. J'ai vu ça sur le site http://c.developpez.com/WalrusSock/ (très bon site). Toujours en attente de vos réponses =)
0
Rejoignez-nous