begin process at 2012 05 30 12:27:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Réseau & Internet

 > 

Winsock2 et Wifi


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Winsock2 et Wifi

vendredi 27 juillet 2007 à 16:33:37 | Winsock2 et Wifi

djin94

Bonjour,

Je programme sous Visual C++ et je souhaite établir une connection UDP entre deux pc via une liaison Wifi. J'ai essayé avec Winsock2 mais ca ne marche pas en Wifi (réseau ad hoc). Par contre j'ai testé en LAN la connexion s'établit parfaitement.
Est ce qu'il est impossible d'établir la connection en Wifi en utilisant Winsock2? Pouvez vous m'aider svp?


Merci  d'avance.
voici le code que j'ai implémenté pour le serveur.
// IAMNet.cpp : définit le point d'entrée pour l'application console.
//

#include "stdafx.h"
#include "IAMNet.h"
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")


#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// Seul et unique objet application

CWinApp theApp;

using namespace std;

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
    int nRetCode = 0;

    // Initialise MFC et affiche un message d'erreur en cas d'échec
    if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
    {
        // TODO : modifiez le code d'erreur selon les besoins
        _tprintf(_T("Erreur irrécupérable : l'initialisation MFC a échoué\n"));
        nRetCode = 1;
    }
    else
    {
        // TODO : codez le comportement de l'application à cet emplacement.
        WSADATA WSAData;
        SOCKET sock;
        SOCKADDR_IN clientsin;
        SOCKET csock;
        SOCKADDR_IN sin;
        SOCKADDR_IN csin;
        CHAR buff;
        WSAStartup(MAKEWORD(2,0), &WSAData);

        cout<<"hello\n\r";

        sin.sin_addr.s_addr    = INADDR_ANY;
        sin.sin_family        = AF_INET;
        sin.sin_port        = htons(50014);
        sock = socket(AF_INET,SOCK_STREAM,0);
        bind(sock, (SOCKADDR *)&sin, sizeof(sin));
        gethostname(&buff, sizeof(buff));
        listen(sock, 0);
       
        int val = 0;

        while(1)
        {
            int sinsize = sizeof(csin);
            if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
            {
               
                int size = sizeof(clientsin);
                int succes = getpeername(csock,(SOCKADDR *)&clientsin, &size);
                int a = WSAGetLastError();
               
                send(csock, "Hello world!\r\n", 30, 0);
                cout<<"client connected \n\r";
            }
        }
}

    return nRetCode;
}


voici le code que j'ai implémenter pour le client.

// iamclient.cpp : définit le point d'entrée pour l'application console.
//

#include "stdafx.h"
#include "iamclient.h"
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")


#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// Seul et unique objet application

CWinApp theApp;

using namespace std;

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
    int nRetCode = 0;

    // Initialise MFC et affiche un message d'erreur en cas d'échec
    if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
    {
        // TODO : modifiez le code d'erreur selon les besoins
        _tprintf(_T("Erreur irrécupérable : l'initialisation MFC a échoué\n"));
        nRetCode = 1;
    }
    else
    {
        // TODO : codez le comportement de l'application à cet emplacement.
        WSADATA WSAData;
        WSAStartup(MAKEWORD(2,0), &WSAData);       
        SOCKET sock;
        SOCKADDR_IN sin;
        char *buff = new char[255];
        sin.sin_addr.s_addr    = inet_addr("180.0.0.2");
        sin.sin_family        = AF_INET;
        sin.sin_port        = htons(4148);
        sock = socket(AF_INET,SOCK_STREAM,0);
        bind(sock, (SOCKADDR *)&sin, sizeof(sin));
        connect(sock, (SOCKADDR *)&sin, sizeof(sin));
        while(1)
        {
            recv(sock, buff, sizeof(buff),0);
            cout<<buff;
        }
    }

    return nRetCode;
}

vendredi 27 juillet 2007 à 19:39:13 | Re : Winsock2 et Wifi

vicenzo

Membre Club
Réponse acceptée !
Pour winsock, aucune différence entre liaison Wifi filaire...

Dans ton code que tu poste :

    * le port du serveur n'est pas le même que celui sur lequel le client veut se connecter
    * l'addresse IP du server en WIFI est- elle la même car le client se connect à une IP en dur...

J'ai implementé une librairie C++ pour ma boite fonctionnant en TCP (filaire, WIFI, ..), Irda et bluetooth.
Le code est stritement le même pour Wifi et filaire.
Seules les implémentation Irda et bluetooth de Winsock exige un peu de code particuliers
lundi 30 juillet 2007 à 09:06:13 | Re : Winsock2 et Wifi

omnia

la seul différence de traitement entre le wifi et du eth c'est le traitement des fonctions spéciales pour le raw socket (codes erreur) sinon sa fonctionne exactement pareil.

Pour info avant de continué dans ton code test si chacune des fonction s'effectue correctement tu éviteras ainsi tout un tas de bugs introuvables ^^ :p
lundi 30 juillet 2007 à 10:26:18 | Re : Winsock2 et Wifi

djin94

Bonjour à tous et merci pour vos réponses.

J'ai fait les modifs pour les adresses et les ports. J'ai oublié de préciser que lorsque je teste sur un seul ordinateur les deux codes cela marche en Wifi. C'est à dire, lorsque je me connecte en passant en dur l'IP du server au code client sur le même ordinateur ça marche sans problème.

C'est lorsque je passe l'exe généré à l'autre ordinateur que la connection ne s'établie pas. Existe t-il des problèmes de pare-feu ou de filtrage d'adresse en mode Ad-Hoc pour le Wifi ?? Ou sinon je me trompe complètement...

En tout cas j'ai testé les fonctions une à une et elle marche en locale mais pas lorsque je tente une connection à un ordinateur distant.

Petite précision, j'ai tenté de streamer un flux vidéo avec VLC et ca marche sans problème.

Merci d'avance pour votre aide.
lundi 30 juillet 2007 à 11:00:29 | Re : Winsock2 et Wifi

omnia

tu as bien pensé a mettre ton exé en release et non debug ?
sinon ce genre de problème sont fréquent sous visual... dans le cas de mauvaise déclaration, ou buffer overflow.

pour ce qui est de ton problème, le firewall windows et le cnetre de sécurité sont activé ? et leurs services respectifs ? ou autre logiciels du genre ?



lundi 30 juillet 2007 à 11:28:16 | Re : Winsock2 et Wifi

djin94

Salut.

Ca y est ca marche! J'ai changé l'adresse IP des deux pcs et j'ai attribués moi meme les adresses. J'ai rentré des adresses comprises dans les plages d'adresses privées et maintenant ca marche sans problème.

Merci beaucoup pour votre aide.


Cette discussion est classée dans : int, sin, sock, sizeof, sockaddr


Répondre à ce message

Sujets en rapport avec ce message

LERREUR QUI TUE §§§§§§§§§§§§§§§§ [ par Avalon10101 ] Vla jai fé mon prog tout é juste mais ya une erreur que je narrive vraiment pas à comprendre ! :C:\Documents and Settings\Alex\Mes documents\Makefile. Problm de Linkage [ par Stormy ] J'ai ce code à compiler sous MSVC 6. Or, bien que mes options de Link soient justes (il me semble), j'obtiens une erreur de linkage:fatal error C1083: Multiples messages non reçus...:(( [ par Gendal67 ] Bonsoir tout le monde!Je suis actuellement en cours d'apprentissage des Sockets et j'ai crée une application Client/Server pouvant communiquer ensembl Liaison client/serveur (socket) [ par bthivent ] Bonjour !J'ai suivi un tutorial pour apprendre les sockets. J'ai ensuite essaiyé un exemple qu'ils proposaient, voici mon code qui permet de faire un Prob avec les sockets [ par Sload ] Bonjour à tous ! Voila mon probleme , j'essaye de develloper un logiciel client/serveur. Je n'en suis qu'au tout début et j'ai déja un probleme lol ! Probleme de socket (envoi) [ par SnOOpss ] Salut !!!Voila g realisé nn programme pour m'envoyer des socket a moi meme ( c pr tester) *********Client******** #include #pragma comment(lib, "ws2_3 CreateProcess sur socket [ par Stormy ] Je cherche un moyen d'associer une socket avec un CreateProcess afin de lancer un shell sur CMD. Malheureusement, je ne trouve pas de liens intéressan [devcpp] erreur de lieur [ par Ar4gorn ] Bonjour, Voila je developpe un leger client-serveur et avec dev-cpp c'est galere du moins au niveau de l'édition des liens. Je ne sais pas quoi mettr PROB SOCKETS CON [ par zzzzzz ] le code source marche mais quand je rajoute un cout#include #pragma comment(lib,"ws2_32.lib")#include int main(void) Probleme de Client Serveur [ par Krox68 ] voila jaimerais faire un programme client qui puisse se connecter a ce serveur : #include void main(){ WSADATA WSAData; WSAStartup(MAKEWORD(2,0), &WS


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,452 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales