Sockets probleme avec Handle

Sens0r Messages postés 35 Date d'inscription lundi 23 janvier 2006 Statut Membre Dernière intervention 23 mars 2006 - 5 févr. 2006 à 11:40
Sens0r Messages postés 35 Date d'inscription lundi 23 janvier 2006 Statut Membre Dernière intervention 23 mars 2006 - 6 févr. 2006 à 15:01
Bonjour,



j'ai un petit problème en ce qui concerne les sokets. Je veux
"construire" un programme qui me permet d'utiliser les fichiers etc des
Ordinateurs qui se trouvent dans mon réseau perso.

Après avoir cherché longtemps j'ai trouvé comment faire avec
Allocconsonle() etc. mais je na sais pas trop quoi faire avec les
handles, quelqu'un pourrait il m'aider?



Voici mon code:


#include 
#include <conio.h>
#include <winsock2.h>
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h> //fir AllocConsole

using std::cout;
using std::cin;
using std::endl;

int main(int argc, char *argv[])
{
    char Buffer[1024]; //Mise en place d'un buffer pour les messages que l'on s'envoit
    cout<<"Client [version 1.0.0.1]"<<endl;
    cout<<"Cr&#233;e le "<<__DATE__<<" &#224; "<<__TIME__<<endl<<endl<<endl; //Donne la date et l'heure de la cr&#233;ation
    WSADATA WSAData;  
    if((WSAStartup(0x0202, &amp;WSAData))!=0) //Mise en place du WSAStartup
    {
        cout<<"[-]WSAStartup Erreur:"<<WSAGetLastError()<<endl; //En cas d'erreur:
        getch(); //Le fichier bloque et ferme
        return -1;
    } 
    cout<<"[+]WSAStartup r&#233;ussi"<<endl;
    
    char IP[70]; //Mise en place d'un buffer pour stocker l'IP ou le nom de l'hote
    cout<<"[?]IP ou nom de domaine de destination: ";
    cin>>IP; //L'utilisateur entre son adresse
    HOSTENT * Hote;    
    if((Hote = gethostbyname(IP))==NULL) // Cette condition verifie si l'hote existe
    {
        cout<<"[-]Erreur: R&#233;solution de l'hote impossible.\n\a"<<endl;
        getch(); //En cas d'erreur le fichier dit que la r&#233;solution de l'hote est impossible
        return -1; //Fermeture
    }    
    cout<<"[+]R&#233;solution de l'hote r&#233;ussi."<<endl;

    SOCKET W_IP;
    if((W_IP = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP))==-1) //Cr&#233;ation du socket
    {
        cout<<"[-]Erreur: Impossible de cr&#233;er le socket.\n\a"<<endl;
        getch();
        return -1;
    }
    cout<<"[+]Cr&#233;ation du socket r&#233;ussie."<<endl;

    IN_ADDR Adresse;
    SOCKADDR_IN SockAddrIn;
    memcpy(&amp;Adresse, Hote -> h_addr, Hote -> h_length);
    SockAddrIn.sin_family = AF_INET; //Type de connection: TCP
    SockAddrIn.sin_port = htons(6667); //Port avec lequel le programme va se connecter
    SockAddrIn.sin_addr = Adresse; //Adresse de destination
    if((connect(W_IP, (SOCKADDR *)&amp;SockAddrIn, sizeof(SockAddrIn)))!=0) //Connection
    {
        cout<<"[-]Impossible de se connecter.\n\a"<<endl; //Si il est impossible de se connecter
        getch();
        return -1; //Fermeture
    }    
    send(W_IP,"C",1,0); //Envoi d'un octet en tant que test
    cout<<"[+]Connection r&#233;ussie."<<endl;
   //--------------------PROBLEME-----------------------------------------
        AllocConsole();  
        HANDLE hIn;
        hIn = GetStdHandle(STD_INPUT_HANDLE);
        if (hIn != INVALID_HANDLE_VALUE)
        {
        // Utilisation du handle.
        }

        HANDLE hOut;
        hOut = GetStdHandle(STD_OUTPUT_HANDLE);
        if (hOut != INVALID_HANDLE_VALUE)
        {
        // Utilisation du handle.
        }

    //-------------------Nei-----------------------------------------




Que mettre à la place d'utilisation du handle?

Ce code est inspiré d'un code téléchargé sur ce site.



salutations,Sens0r

2 réponses

katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 3
6 févr. 2006 à 09:16
char IP[70]; -> 16 suffira.

Pourquoi ouvrir deux nouvelles consoles?
0
Sens0r Messages postés 35 Date d'inscription lundi 23 janvier 2006 Statut Membre Dernière intervention 23 mars 2006
6 févr. 2006 à 15:01
oui, bien sur que 16 suffit, mais la n'est pas la question...



pourquoi 2?



ben une pour le Inet une pour le Out^^

non?



mais le problème c'est resolu, je vais poster ma solution dans quelques jours

mfg

Sens0r
0