cs_LordBob
Messages postés2865Date d'inscriptionsamedi 2 novembre 2002StatutMembreDernière intervention11 mai 2009
-
23 juin 2004 à 17:30
cs_LordBob
Messages postés2865Date d'inscriptionsamedi 2 novembre 2002StatutMembreDernière intervention11 mai 2009
-
23 juin 2004 à 23:27
Bonjours a tous,
voila j'ai fait un petit jeu, trois fois rien et cela fait un moment que j'essai d'y rajouté la fonction jouable sur internet... donc j'avance un peu, mais la j'ai un probleme... mon client n'arrive pas a se connecter sur le serveur et je n'arrive pas a dire pourquoi:
#include <stdio.h>
#include <winsock2.h>
#include <windows.h>
#include "resource.h"
// insertion de la librairie winsock
#pragma comment(lib, "ws2_32.lib")
// var globale
int quit = 0;
// fonction du serveur
void jeu_server(HWND hDlg)
{
// variable du serveur
SOCKET sock;
SOCKET csock;
SOCKADDR_IN sin;
SOCKADDR_IN csin;
sock = socket(AF_INET, SOCK_STREAM, 0); // creation du socket
sin.sin_addr.s_addr = INADDR_ANY; // n'importe quelle d'adresse
sin.sin_family = AF_INET; // type internet
sin.sin_port = htons(666); // port utilisé
bind(sock, (SOCKADDR*)&sin, sizeof(sin)); // associe ip et port
// on signal l'attente d'un joueur
SetWindowText(GetDlgItem(hDlg, IDC_STATUT), "Attente d'un joueur...");
listen(sock, 0); // on attend 1 seul joueur
int sinsize = sizeof(csin);
while(quit != 1)
{
// si un joueur se connecte
if((csock = accept(sock, (SOCKADDR*)&sin, &sinsize)) != INVALID_SOCKET)
{
// on signal le joueur connecté
SetWindowText(GetDlgItem(hDlg, IDC_STATUT), "Joueur connecté");
// on definit Enable les boutons de la feuille
EnableWindow(GetDlgItem(hDlg, IDC_MULTI_PIERRE), TRUE);
EnableWindow(GetDlgItem(hDlg, IDC_MULTI_FEUILLE), TRUE);
EnableWindow(GetDlgItem(hDlg, IDC_MULTI_CISEAU), TRUE);
quit = 1;
}
}
// on ferme les sockets
closesocket(sock);
closesocket(csock);
}
// fonction du client
void jeu_client(HWND hDlg, char *add_ip)
{
// variable du client
SOCKET sock;
SOCKADDR_IN sin;
sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = inet_addr(add_ip);
sin.sin_port = htons(666);
if(connect(sock, (SOCKADDR*)&sin, sizeof(sin)) < 0)
{
// on signal une erreur
SetWindowText(GetDlgItem(hDlg, IDC_STATUT), "Erreur lors de la connection");
}
else
{
// on signal le joueur connecté
SetWindowText(GetDlgItem(hDlg, IDC_STATUT), "Joueur connecté");
// fonction de jeu
}
// on ferme le socket
closesocket(sock);
}
voila merci par avance...
Bob...
"La chance accorde ses faveur aux esprits avertis..."
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 23 juin 2004 à 18:44
J'ai pas regarder ton code, mais plusieurs personne on eu des problemes similaires .... Si en local ca marche, et en internet ca ne marche pas c'est a cause du firewall de XP ou autres ...
cs_LordBob
Messages postés2865Date d'inscriptionsamedi 2 novembre 2002StatutMembreDernière intervention11 mai 20099 23 juin 2004 à 23:27
effectivement j'avais oublié de faire un wsastartup, une fois rajouté cela marche beaucoup mieux... grosse, tres grosse erreur de ma part... merci a toi cosmobob...
pour dire la verité, pour commencé la partie online de mon jeu, j'avais fait un copié-coller, et voila le wsastartup était dans une autre fonction... voila ca m'apprendra !!!
merci encore a toi...
bonne prog
Bob...
"La chance accorde ses faveur aux esprits avertis..."