créer un resau

créer un resau - C++ - Programmation

Marsh Posté le 31-08-2005 à 19:00:38    

Bonjour !!!
 
   Bon, voilà : je suis à la recherche d'explication pour créer un résau. Car voilà j'ai fait un petit jeu qui marche plutôt bien. bon je travaille encore sur la gestion des colision mais j'ai déjà une première version qui marche (peut être pas trop propre mais j'améliore ...)
 
   Mais bon voilà pour le moment ce jeu a autant d'intéret que quake 3 tout seul et sans bots... Alors il me reste "juste" a faire communiquer plusieurs PC et ça devrait être pas mal.  
 
   Bon pour le moment je connais juste la méthode (attention les yeux ) _bios_serialCom() : pour utiliser le port série. Mais bon là j'ai déjà un problème : le compilateur m'annonce une erreur de lien comme quoi il ne reconnais pas la fonction "_bios_serialCom()". pourtant dans le livre où je l'ai tirée il ne parle pas de lien a rajouter...
   
   Enfin de toute façon j'aimerais plutôt utiliser mes cartes résau. mais j'arrive pas a trouver dans google un tutorial qui m'expliquerait comment faire. Aussi pouvez vous m'aider en m'expliquant comment ça marche ou m'indiquer un site où je pourrais le comprendre ?
 
MERCI !!!   :)  

Reply

Marsh Posté le 31-08-2005 à 19:00:38   

Reply

Marsh Posté le 01-09-2005 à 12:01:19    

bon... j'ai finalement compris que ce que je cherchai en fait c'était comment utiliser des socket... alors du coup a partir du moment que j'ai sus quoi cherché j'ai commencé a trouver des tutoriel sur le sujet. Mais là j'avoue avoir encore un petit problème : j'ai lu un tutoriel que j'ai trouvé et j'ai essayé l'exemple proposé et ... ca marche pas...  :??:  
 
bon voilà le code proposé :  
 
pour le client :
 

Citation :


#include<winsock2.h>
#pragma comment(lib, "ws2_32.lib" )
#include<stdio.h>
 
int main(int argc, char *argv[])
{
   WSADATA WSAData;
   WSAStartup(MAKEWORD(2,0), &WSAData);
   
   SOCKET sock;
   SOCKADDR_IN sin;
   char *buffer = new char[256];
   
   sock = socket(AF_INET, SOCK_STREAM, 0);
   
   sin.sin_addr.s_addr = inet_addr("169.000.000.000" );
   sin.sin_family = AF_INET;
   sin.sin_port = htons(6667);
   connect(sock, (SOCKADDR *)&sin, sizeof(sin));
   recv(sock, buffer, sizeof(buffer), 0);
   closesocket(sock);
   WSACleanup();
   printf("recu : " );
   for(int i = 0 ; i < 256 ; i++)
      printf("%c",buffer[i]);
}


 
remarque : le printf() c'est de moi pour afficher le texte reçu ... (oui bon je sais c'est du C ) et "169.000.000.000" c'est mon adresse IP du serveur.
 
et pour le serveur :

Citation :


#include<winsock2.h>
#pragma comment(lib, "ws2_32.lib" )
#include<stdio.h>
 
int main(int argc, char *argv[])
{
   WSADATA WSAData;
   WSAStartup(MAKEWORD(2,0), &WSAData);
   
   SOCKET sock;
   SOCKET csock;
   SOCKADDR_IN csin;
   SOCKADDR_IN sin;
   
   sock = socket(AF_INET, SOCK_STREAM, 0);
   
   sin.sin_addr.s_addr = INADDR_ANY;
   sin.sin_family = AF_INET;
   sin.sin_port = htons(23);
   connect(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 world !!!",16,0);
   }  
}


 
Donc voilà le tout passe le compilateur mais au moment de l'exécution le programme du client affiche juste "recu : " et rien de plus...  
 
heu vous voyez l'erreur ???  
 
MERCI !!!  :)

Reply

Marsh Posté le 01-09-2005 à 14:54:15    

oops... je me suis déjà aperçu d'une petite erreur :  
 
pour le serveur c'est pas  

Citation :

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

 
mais

Citation :

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


 
mais bon ça marche toujours pas...  :fou:

Reply

Marsh Posté le 03-09-2005 à 19:56:04    

Il n'y a vraiment personne qui pourrait m'aider ???
 
Dans la documentation que j'ai trouvé ils parlent de port telnet, est-ce vraiment du résau local comme je souhaite le faire ?
pouvez vous me dire si c'est vraiment vers le socket que je dois me diriger pour faire un résau local ?
 
Merci

Reply

Marsh Posté le 04-09-2005 à 09:21:56    

d'après le code du second post, ton serveur écoute sur le port 23 tandis que ton client se connecte au port 6667 :)

Reply

Marsh Posté le 07-09-2005 à 13:49:22    

Merci de m'avoir répondu !!!  
 
mais malgré les avoir mis tous les les deux sur le même port ça ne change rien...  :fou:

Reply

Marsh Posté le 07-09-2005 à 17:54:55    

change d'adresse ip!  
ça marchera pas avec 169.0.0.0
prends plutot alors 169.0.0.1
de 1 à 254
pas prendre le 0 ni le 255 c'est des adresses spéciales

Reply

Marsh Posté le 08-09-2005 à 17:17:20    

  Ok merci, mais en fait j'avais déjà essayé de changer d'adresse IP. ma nouvelle adresse est une que windows m'a donné de lui même : c'est "169.254.15.61". (je l'ai obtenue en créant une partie en resau local de Half-Life.)
 
   Au fait au moment où j'avais voulu la choisir moi même j'avais le choix de spécifier mon adresse IP et mon adresse IP en cache... L'adresse IP en cache vous savez ce que c'est ? comment on peut l'avoir ? et a votre avis si je parviens a l'avoir ça peut marcher avec celle la ?  :??:

Reply

Marsh Posté le 08-09-2005 à 19:13:35    

169.254.15.xxx n'est elle pas une adresse d'erreur type que tu recois quand ta carte a des problemes de connectivité, logiquement ton adresse en local devrait etre de lordre de 192.168.0.xxx
Essaie de "forcer" ces ip.
 

Reply

Marsh Posté le 09-09-2005 à 15:22:53    

Ok merci j'essaye ça tout de suite...
 
mais je t'avoue que ça m'étonnerait puisque mon resau local entre mes deux ordinateurs marche très bien...

Reply

Marsh Posté le 09-09-2005 à 15:22:53   

Reply

Marsh Posté le 09-09-2005 à 16:17:26    

Bon alors j'ai essayé de changer de changer mon addresse IP en : "192.168.0.1" mais une fois l'avoir fait j'ai eu un problème : même mon resau local n'était plus reconnu (je ne pouvais plus acceder a mon autre ordinateur...) alors après plusieurs redémarages j'ai finalement remis mon adresse a "169.254.15.61" et ensuite ça marchait a nouveau... (Enfin je pense quand même ressayer ce soir). Mais je t'avoue que je suis plus que septique puisque je n'ai aucun problème pour acceder d'un ordinateur à l'autre via resau et que j'ai également aucun problèmes pour jouer en resau. comme entre autre à Half-Life. Alors j'ai voulu essayer de voir en utilisant un jeu plus ancien qui ne détecte pas automatiquement le PC connecté et j'ai alors choisit GTA (le premier du nom...) et là au moment que je veut me connecter a un autre ordinateur il me demande l'addresse IP du serveur et la je lui set :"169.254.15.61" et là aucun problème il me trouve le serveur et le jeu en resau commence...
 
  Aussi je t'avoue que je doute vraiment que le problème vienne de mes adresses IP. Malgré, s'il est vrai que pour le moment tout le monde qui m'a répondu tend vers ce probème...

Reply

Marsh Posté le 09-09-2005 à 19:29:02    

firewall ?


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 09-09-2005 à 19:50:38    

non je pense pas, j'aurrais eu un message demandant l'autorisation ou non de la connection au reseau de mon programme. Deplus hors internet je désactive toujours le firewall...

Reply

Marsh Posté le 10-09-2005 à 11:16:09    

Bon finalement je viens de réussir a progresser d'un pas ...  :bounce:  
 
j'ai retouché au code du serveur qui deviens maintenant :
 

Citation :


#include<winsock2.h>
#pragma comment(lib, "ws2_32.lib" )
#include<stdio.h>
 
int main(int argc, char *argv[])
{
   WSADATA WSAData;
   WSAStartup(MAKEWORD(2,0), &WSAData);
   
   SOCKET sock;
   SOCKET csock;
   SOCKADDR_IN csin;
   SOCKADDR_IN sin;
   
   sock = socket(AF_INET, SOCK_STREAM, 0);
   
   sin.sin_addr.s_addr = INADDR_ANY;
   sin.sin_family = AF_INET;
   sin.sin_port = htons(23);
   bind(sock, (SOCKADDR *)&sin, sizeof(sin));
   listen(sock, 0);
   while(1)
   {
      int sinsize = sizeof(csin);
      if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
         {printf("." );
            send(csock, "hello world",12,0);
         printf("+" );
         }
   }  
}


 
et donc j'ai remplacé  

Citation :


send(sock, "hello world",12,0);


 
par :  

Citation :


send(csock, "hello world",12,0);


 
et là ça marche !!! :)  enfin... pas complètement... le message "hello world" n'est pas envoyé complètement : je reçois juste : "hell" et c'est tout : juste les 4 premiers caractères... pourtant le 12 le la methode send() était censé dire d'envoyer les 11 caractères + le caractère null non ???  :??:

Reply

Marsh Posté le 10-09-2005 à 15:12:39    


send(csock, "hello world\r\n", 13, 0);
 
 :)

Reply

Marsh Posté le 10-09-2005 à 16:34:04    

Citation :


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


sizeof(buffer) = 4 car c'est un pointeur

Reply

Marsh Posté le 10-09-2005 à 19:50:43    

heuuu merci Jan0 en fait c'était vraiment ça ...  :D  
 
Bon ba maintenant mon programme marche bien ...
 
Merci a tous de m'avoir répondu !!!

Reply

Marsh Posté le 03-12-2005 à 15:53:14    

J'utilise le meme code client avec un while en plus et je me connecte à mon serveur smtp et voici ce que j'ai dans ma console msdos (je ne comprends pas tout) Le nom de domaine de mon serveur est sortirdechezsoi.free.fr  Le mon de mon serveur mail est postfix .  
 
recu : 220 ©♥= 2;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\ATI Technologies\ATI Con
trol Panel;C:\PROGRA~1\FICHIE~1\SONICS~1\ PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;
.JS;.JSE;.WSF;.WSH PROCESSOR_ARCHITECTURE=x86 PROCESSOR_IDENTIFIER=x86 Family 15
 Model 47 Stepping 0, Arecu : venu©♥= 2;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\A
TI Technologies\ATI Control Panel;C:\PROGRA~1\FICHIE~1\SONICS~1\ PATHEXT=.COM;.E
XE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH PROCESSOR_ARCHITECTURE=x86 PROCESSOR_I
DENTIFIER=x86 Family 15 Model 47 Stepping 0, Arecu : s.so©♥= 2;C:\WINDOWS;C:\WIN
DOWS\System32\Wbem;C:\ATI Technologies\ATI Control Panel;C:\PROGRA~1\FICHIE~1\SO
NICS~1\ PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH PROCESSOR_ARCHI
TECTURE=x86 PROCESSOR_IDENTIFIER=x86 Family 15 Model 47 Stepping 0, Arecu : rtir
©♥= 2;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\ATI Technologies\ATI Control Panel;
C:\PROGRA~1\FICHIE~1\SONICS~1\ PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.W
SF;.WSH PROCESSOR_ARCHITECTURE=x86 PROCESSOR_IDENTIFIER=x86 Family 15 Model 47 S
tepping 0, Arecu : dech©♥= 2;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\ATI Technolo
gies\ATI Control Panel;C:\PROGRA~1\FICHIE~1\SONICS~1\ PATHEXT=.COM;.EXE;.BAT;.CM
D;.VBS;.VBE;.JS;.JSE;.WSF;.WSH PROCESSOR_ARCHITECTURE=x86 PROCESSOR_IDENTIFIER=x
86 Family 15 Model 47 Stepping 0, Arecu : ezso©♥= 2;C:\WINDOWS;C:\WINDOWS\System
32\Wbem;C:\ATI Technologies\ATI Control Panel;C:\PROGRA~1\FICHIE~1\SONICS~1\ PAT
HEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH PROCESSOR_ARCHITECTURE=x86
 PROCESSOR_IDENTIFIER=x86 Family 15 Model 47 Stepping 0, Arecu : i.fr©♥= 2;C:\WI
NDOWS;C:\WINDOWS\System32\Wbem;C:\ATI Technologies\ATI Control Panel;C:\PROGRA~1
\FICHIE~1\SONICS~1\ PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH PRO
CESSOR_ARCHITECTURE=x86 PROCESSOR_IDENTIFIER=x86 Family 15 Model 47 Stepping 0,
Arecu : ee.f©♥= 2;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\ATI Technologies\ATI Co
ntrol Panel;C:\PROGRA~1\FICHIE~1\SONICS~1\ PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE
;.JS;.JSE;.WSF;.WSH PROCESSOR_ARCHITECTURE=x86 PROCESSOR_IDENTIFIER=x86 Family 1
5 Model 47 Stepping 0, Arecu : r ES©♥= 2;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\
ATI Technologies\ATI Control Panel;C:\PROGRA~1\FICHIE~1\SONICS~1\ PATHEXT=.COM;.
EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH PROCESSOR_ARCHITECTURE=x86 PROCESSOR_
IDENTIFIER=x86 Family 15 Model 47 Stepping 0, Arecu : MTP ©♥= 2;C:\WINDOWS;C:\WI
NDOWS\System32\Wbem;C:\ATI Technologies\ATI Control Panel;C:\PROGRA~1\FICHIE~1\S
ONICS~1\ PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH PROCESSOR_ARCH
ITECTURE=x86 PROCESSOR_IDENTIFIER=x86 Family 15 Model 47 Stepping 0, Arecu : Pos
t©♥= 2;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\ATI Technologies\ATI Control Panel
;C:\PROGRA~1\FICHIE~1\SONICS~1\ PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.
WSF;.WSH PROCESSOR_ARCHITECTURE=x86 PROCESSOR_IDENTIFIER=x86 Family 15 Model 47
Stepping 0, Arecu : fix ©♥= 2;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\ATI Technol
ogies\ATI Control Panel;C:\PROGRA~1\FICHIE~1\SONICS~1\ PATHEXT=.COM;.EXE;.BAT;.C
MD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH PROCESSOR_ARCHITECTURE=x86 PROCESSOR_IDENTIFIER=
x86 Family 15 Model 47 Stepping 0, Arecu : (2.0©♥= 2;C:\WINDOWS;C:\WINDOWS\Syste
m32\Wbem;C:\ATI Technologies\ATI Control Panel;C:\PROGRA~1\FICHIE~1\SONICS~1\ PA
THEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH PROCESSOR_ARCHITECTURE=x8
6 PROCESSOR_IDENTIFIER=x86 Family 15 Model 47 Stepping 0, Arecu : .13)©♥= 2;C:\W
INDOWS;C:\WINDOWS\System32\Wbem;C:\ATI Technologies\ATI Control Panel;C:\PROGRA~
1\FICHIE~1\SONICS~1\ PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH PR
OCESSOR_ARCHITECTURE=x86 PROCESSOR_IDENTIFIER=x86 Family 15 Model 47 Stepping 0,
 Arecu :  (Ma©♥= 2;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\ATI Technologies\ATI C
ontrol Panel;C:\PROGRA~1\FICHIE~1\SONICS~1\ PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VB
E;.JS;.JSE;.WSF;.WSH PROCESSOR_ARCHITECTURE=x86 PROCESSOR_IDENTIFIER=x86 Family
15 Model 47 Stepping 0, Arecu : ndra©♥= 2;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:
\ATI Technologies\ATI Control Panel;C:\PROGRA~1\FICHIE~1\SONICS~1\ PATHEXT=.COM;
.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH PROCESSOR_ARCHITECTURE=x86 PROCESSOR
_IDENTIFIER=x86 Family 15 Model 47 Stepping 0, Arecu : ke L©♥= 2;C:\WINDOWS;C:\W
INDOWS\System32\Wbem;C:\ATI Technologies\ATI Control Panel;C:\PROGRA~1\FICHIE~1\
SONICS~1\ PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH PROCESSOR_ARC
HITECTURE=x86 PROCESSOR_IDENTIFIER=x86 Family 15 Model 47 Stepping 0, Arecu : in
ux©♥= 2;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\ATI Technologies\ATI Control Pane
l;C:\PROGRA~1\FICHIE~1\SONICS~1\ PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;
.WSF;.WSH PROCESSOR_ARCHITECTURE=x86 PROCESSOR_IDENTIFIER=x86 Family 15 Model 47
 Stepping 0, Arecu : )
x©♥= 2;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\ATI Technologies\ATI Control Panel
;C:\PROGRA~1\FICHIE~1\SONICS~1\ PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.
WSF;.WSH PROCESSOR_ARCHITECTURE=x86 PROCESSOR_IDENTIFIER=x86 Family 15 Model 47
Stepping 0, A


Message édité par matthieu5978 le 03-12-2005 à 17:07:30
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed