Partage
  • Partager sur Facebook
  • Partager sur Twitter

Reseau ?

    2 octobre 2007 à 18:56:42

    Bonjour a tous!

    Voila, mon probleme est assez complexe...aussi je ne m'attend pas a trouver de solution mais bon sait-on jamais !
    J'ai commencer a coder en c/c++ un programme permettant de créér un reseau tcp/ip entre 2 pc.
    J'utilise la librairie winsock 2.
    Le serveur est derriere un rooter.
    Le client doit se connecter au serveur.
    Comment faire ?
    Je sais qu'il existe la fonction :

    1. sin.sin_addr.s_addr = inet_addr("83.179.168.125");

    Mais elle ne specifie pas l'adresse ip locale a entrer.
    Donc puisque j'ai un autre pc connecté derriere le router, le client ne sait pas sur lequel se connecter...
    Voila...
    des idées ?

    D'avance merci, cela fait des semaines que je cherche...
    • Partager sur Facebook
    • Partager sur Twitter
      2 octobre 2007 à 19:15:32

      en fait si tu n'as que l'adresse du routeur il est habituellement possible de configurer le dit routeur avec un "serveur virtuel". Le serveur virtuel est en fait une redirection. Ex : je me connecte sur le port 8080 du routeur et lui il renvoie toute ma connexion vers le port 5679 de l'ordinateur X (défini avec son adresse de sous-réseau)

      <EDIT>Les numéros de ports sont donnés à titre d'exemple, ils sont 100% configurables</EDIT>
      • Partager sur Facebook
      • Partager sur Twitter
        3 octobre 2007 à 15:48:38

        pas a 100% car les port 0 à 1024 sont réservés.

        Quel est ton routteur?
        • Partager sur Facebook
        • Partager sur Twitter
          4 octobre 2007 à 4:53:50

          0 a 1024 reserve et alors?
          Si il n'y a aucun service qui les exploites tu peux tres bien t'en servir mais a attention a pas te faire avoir...
          • Partager sur Facebook
          • Partager sur Twitter
            4 octobre 2007 à 16:44:13

            autant ne pas prendre de risques et utiliser un des 64512 ports qui restent.
            • Partager sur Facebook
            • Partager sur Twitter
              4 octobre 2007 à 18:10:10

              Ou proposer son protocol en RFC puis espérer que les vieux barbus acceptent notre standard et d'ici 10 ans ont va avoir un port réservé sur un système d'exploitation ;p
              • Partager sur Facebook
              • Partager sur Twitter
                4 octobre 2007 à 18:28:49

                @ MatteX : pas mal je vais y travailler ^^
                • Partager sur Facebook
                • Partager sur Twitter
                  5 octobre 2007 à 15:44:51

                  Bonjour a tous et merci pour toutes ces reponses.
                  Mon router est un speedtouch.
                  J'utilise le port 3389.
                  Mattex, je me suis renseigné pour le serveur virtuel.
                  Mon router n'apelle pas ca un serveur virtuel, mais cela permet seulement d'ouvrir certains ports...
                  Le probleme c'est que cela créée une faille de sécurité car nimporte quel hacker digne de ce nom a une porte ouverte. Bien sur, il reste le firewall de windows mais je suis aussi obligé de le désactiver pour permettre au programme de se connecter...
                  Seul probleme, le programme ne fonctionne toujours pas :p^^
                  Donc la je commence juste un petit peu a desesperer :lol: ..
                  donc si quelqun a une idée... Il est le bienvenue !
                  • Partager sur Facebook
                  • Partager sur Twitter
                    5 octobre 2007 à 17:45:58

                    Tu n'a pas le choix d'ouvrir ton port si tu veux que ton application s'y connecte. Et tu a une option dans le firewall de window qui te permet de choisir les ports/application que tu utilise.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      5 octobre 2007 à 18:26:21

                      Eh bien je savais que on pouvait configurer le firewall de windows pour faire des exeptions a certains numeros de ports ou application, c'est ce que j'ai fait, je n'ai pas completement désactivé le firewall...Mais cela constitue quand meme une faille de sécurité assez importante.
                      Quelqun s'y connait il en winsock2 ?
                      Mon programme marche tres bien en local, mais pour le reste... rien du tout ! Le client ne trouve pas le serveur ou le serveur n'accepte pas le client ou le router bloque je ne sais pas,... Mais j'aimerai savoir si cela vient du fait que quand ça passe par internet, il faut ajouter certains parametres ? Voici mon code :
                      1. #include "winsock2.h"
                      2. #pragma comment(lib, "ws2_32.lib")
                      3. #include <stdio.h>
                      4. #include <stdlib.h>
                      5. #include <string.h>
                      6. #include <windows.h>
                      7. #include <iostream.h>
                      8. #define IP   "83.189.155.166"
                      9. #define PORT 3389
                      10. main()
                      11. {  
                      12. char *bufferRecv = new char[800];
                      13. char *bufferSend = new char[800];
                      14. int rec;
                      15. printf("          -=[ Client ]=-\n\n");
                      16.                 WSADATA WSAData;
                      17.                 WSAStartup(MAKEWORD(2,0), &WSAData);
                      18.                 SOCKET sock;
                      19.                 SOCKADDR_IN sin;
                      20.                 sock = socket(AF_INET, SOCK_STREAM, 0)
                      21.                 sin.sin_addr.s_addr     = inet_addr(IP);
                      22.                 sin.sin_family  = AF_INET;
                      23.                 sin.sin_port    = htons(PORT);
                      24.                 connect(sock, (SOCKADDR *)&sin, sizeof(sin));
                      25.         do
                      26.         {       
                      27.                 scanf ("%s",bufferSend);
                      28.                 send(sock, bufferSend, strlen(bufferSend), 0);  
                      29.  if ((rec = recv (sock, bufferRecv, 64*sizeof(char), 0)) != SOCKET_ERROR)
                      30.                 {
                      31.                  bufferRecv[rec] = '\0';
                      32.                  printf("\n%s\n",bufferRecv);
                      33.                 }
                      34.         }
                      35.         while (rec > 0);
                      36. }

                      Voici le serveur
                      1. #include "winsock2.h"
                      2. #pragma comment(lib, "ws2_32.lib")
                      3. #include <stdio.h>
                      4. #include <stdlib.h>
                      5. #include <string.h>
                      6. #include <windows.h>
                      7. #include <iostream.h>
                      8. #define IP   "83.189.155.166"
                      9. #define PORT 3389
                      10. main()
                      11. {  
                      12. char *bufferRecv = new char[800];
                      13. char *bufferSend = new char[800];
                      14. int rec;
                      15. printf("          -=[ Client ]=-\n\n");
                      16.                 WSADATA WSAData;
                      17.                 WSAStartup(MAKEWORD(2,0), &WSAData);
                      18.                 SOCKET sock;
                      19.                 SOCKADDR_IN sin;
                      20.                 sock = socket(AF_INET, SOCK_STREAM, 0)
                      21.                 sin.sin_addr.s_addr     = inet_addr(IP);
                      22.                 sin.sin_family  = AF_INET;
                      23.                 sin.sin_port    = htons(PORT);
                      24.                 connect(sock, (SOCKADDR *)&sin, sizeof(sin));
                      25.         do
                      26.         {       
                      27.                 scanf ("%s",bufferSend);
                      28.                 send(sock, bufferSend, strlen(bufferSend), 0);  
                      29.  if ((rec = recv (sock, bufferRecv, 64*sizeof(char), 0)) != SOCKET_ERROR)
                      30.                 {
                      31.                  bufferRecv[rec] = '\0';
                      32.                  printf("\n%s\n",bufferRecv);
                      33.                 }
                      34.         }
                      35.         while (rec > 0);
                      36. }


                      Je suis vraiment désolé de vous donner le code comme ça en bloc mais je ne vois pas du tout où est l'erreur donc je ne peux pas vous donner un petit bout de code...
                      Sinon j'ai bien ouvert le port 3389, j'ai meme completement désactivé le parfeu du modem et de windows ! Et toujours rien...
                      • Partager sur Facebook
                      • Partager sur Twitter
                        5 octobre 2007 à 21:22:02

                        Ben oui c'est une faille si le serveur qui l'écoute permet de faire n'importe quoi...

                        un port = une application qui écoute, hors si ton application écoute un port tu n'as pas de risque flagrant. la faille est lors qu'un logiciel comme un cheval de troie prend possession du port...

                        Pour te connecter à ton ordinateur avec un certain port tu dois : Ajouter une exception pour le port voulue dans le firewall windows, transféré ce qui entre sur un port de ton routeur vers le port écouté sur l'ordinateur (tu dois transféré en utilisant la bonne adresse de sous-réseau)

                        Comme ton application n'est pas connues des pirate il ne pourront pas l'utiliser... de plus j'imagine que tu ne fais pas une application qui te permet de supprimer des fichiers ou d'exécuter du code provenant de l'extérieur.

                        Pour ajouté à la sécurité tu n'as qu'à rebloquer le port lors que tu ne l'utilise pas.
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Reseau ?

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown