IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[VC++.Net2003] winforms et socket


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 43
    Par défaut [VC++.Net2003] winforms et socket
    Bonjour à tous les programmeur,

    voila le code que j'ai introduit dans mon projet (winforms):
    avec un textbox:txtadrip; un 2ème textbox: txtport; un bouton:btnScanun et une listbox:listBox1.
    on introduit une adresse IP et un n° de port ensuite on click sur le bouton
    et la listBox affiche si le port est ouvert ou fermé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    private: System::Void btnScanun_Click(System::Object * sender, System::EventArgs * e)
    {
    String* adrip = txtadrip->Text->ToString();//ip de la machine a scnanner 
    constwchar_t__pin* adr = PtrToStringChars(adrip);
    char* ip = (char *)malloc((adrip-> Length + 1) * 2);
    wcstombs(ip, adr, (adrip-> Length + 1) * 2);
    int port = Convert::ToInt16(txtport->Text);//définit le n° de port
    String* nomport;//définit le nom deport
    /* on initialise notre winsock */ 
    WSADATA WSAData; 
    WSAStartup(MAKEWORD(2,0), &WSAData); 
    /* fin d'initialisation */ 
    
    /* on construit notre socket */ 
    SOCKET sock; 
    SOCKADDR_IN sin; 
     
    sock = socket(AF_INET, SOCK_STREAM, 0); 
    sin.sin_addr.s_addr = inet_addr(ip); 
    sin.sin_family = AF_INET; 
    sin.sin_port = htons(port); 
    nomport=Getportname(port);
    if((connect(sock,(struct sockaddr*)&sin,sizeof(struct sockaddr))) == 0)
    {
    listBox1->Items->Add(String::Concat(nomport, S" port n° ",port.ToString()," : Ouvert")); 
    }
    else 
    {
    listBox1->Items->Add(String::Concat(nomport, S" port n° ",port.ToString()," : Fermé")); 
    } 
    
    getchar(); 
    WSACleanup(); //on libére les ressources allouées 
    closesocket(sock); //on ferme le socket 
    } 
    
    Jusqu'au ici tout ce passe très bien avec l'@ 127.0.0.1.
    en introduisant n'importe quelle autre adresse il me donne le même comme si c'était localhost.
    Qu'est ce que je fait pour régler ce petit problème?

    Merci à tous.

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    moi je vote, et je dis que c'est bien dommage de se priver des sockets du framework .Net
    Surtout si c'est pour faire des conversions de String ^ en char *

  3. #3
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 43
    Par défaut
    Citation Envoyé par nico-pyright(c)
    moi je vote, et je dis que c'est bien dommage de se priver des sockets du framework .Net
    Surtout si c'est pour faire des conversions de String ^ en char *
    J'ai pas compris qu'est ce que tu veux dire?
    est ce que tu peux m'expliquer stp?
    Merci.

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    quand je regarde ton code, je dis beurk

    il y a un mélange de winforms du framework .Net, avec des sockets de l'api win32 plus du vieux C avec des char * converties depuis une String managée, avec un getchar() (?) ...

    et je me demande pourquoi ne pas uniformiser le tout et faire tout en code managé, en utilisant le framework .Net

    mais, c'est juste une suggestion, ce n'est pas obligatoire

  5. #5
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 43
    Par défaut
    Mon problème est de comment régler la socket pou savoir pour n'importe quelle adresseIP, les ports ouvert.


    Merci.

Discussions similaires

  1. executer une application a distance : Sockets ? RPC ? CORBA?
    Par a_hic dans le forum Développement
    Réponses: 5
    Dernier message: 30/05/2006, 13h02
  2. raw socket et langage c
    Par SlayDave dans le forum Développement
    Réponses: 2
    Dernier message: 29/08/2002, 19h09
  3. socket
    Par ben91 dans le forum Développement
    Réponses: 5
    Dernier message: 13/08/2002, 11h04
  4. Socket:Envoyer du texte d'un serveur vers tout les clients
    Par cedm78 dans le forum Web & réseau
    Réponses: 7
    Dernier message: 01/08/2002, 16h40
  5. transfert d'un fichier bitmap en socket tcp
    Par localhost dans le forum C++Builder
    Réponses: 5
    Dernier message: 29/07/2002, 00h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo