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

Réseau C Discussion :

Probleme avec connect().


Sujet :

Réseau C

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 75
    Points : 35
    Points
    35
    Par défaut Probleme avec connect().
    Salut.
    Je programme un scanner de port qui doi se connectet a un certain nombre de ports sa marche tres bien mais le seule prob c'est que sa prend du temps c'est lent et je crois que le probleme c'est la fonction connect() car elle attend un certain temps(le timeout) pour se connecter sa serais mieux deenlever le timeout,j'ai entendu parler des threads j'ai eu quelque infos a propos mais je sais pas comment les utiliser dans mon code.

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par snakemetalgear
    Je programme un scanner de port <...>
    Euh, dans quel but précis ?
    Pas de Wi-Fi à la maison : CPL

  3. #3
    Membre régulier Avatar de psyphi
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Allemagne

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2006
    Messages : 119
    Points : 120
    Points
    120
    Par défaut
    Il a plusieurs méthodes pour scanner les ports, tu peux aussi utiliser la méthode du SYN scan (google pour une explications complète) qui est plus rapide que le connect je crois.
    Quant à ton problème tout ce que tu as besoin c´est de trouver un cours sur les threads et à réfléchir à une bonne implémentation.
    Mon blog: http://blog.bores.fr
    Mon wiki: http://bores.fr/wiki
    Mes programmes libres: https://github.com/tbores

  4. #4
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 75
    Points : 35
    Points
    35
    Par défaut
    Eh bah c'est ce que j'ai fais et j'ai essayer avec un code que je pense dois fonctionner le voila:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DWORD WINAPI Thread1(LPVOID lParametr);
    int main()
    {
     DWORD Thread;
     CreateThread(NULL,0,Thread1,NULL,0,&Thread);
        Sleep(1000);
    }
    DWORD WINAPI Thread1(LPVOID lParametr){
     connect(sock,(SOCKADDR *)&sin,16)}
    J'ai mis que le code des threads car tous le code c'est un peu long.
    En tous cas ce code ne marche pas,quand je fais netstat -n je voi pas la connexion et le connect retourne toujours un -1.
    Mais par contre tous ce qui est dans le thread marche a pars le connect,et si je lenleve du thread et je met juste dans le main alors sa marche donc le socket est tres bien initialisé.
    Si quelqu'un peut me donner un exemple simple de lutilisation de connect() avec les threads je le remercie davance.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 75
    Points : 35
    Points
    35
    Par défaut
    La raison pour laquelle je programme un scanner de port est educatif juste pour massurer que je metrise bien les sockets c'est tout.

  6. #6
    Membre régulier Avatar de psyphi
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Allemagne

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2006
    Messages : 119
    Points : 120
    Points
    120
    Par défaut
    Dans la fonction de thread tu ne récupère pas le bon paramètre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    DWORD WINAPI Thread1(LPVOID lParameter){
             int * sock = (int *)lParameter;
             connect(&sock,(SOCKADDR *)&sin,16);
    }
    Normalement ça devrait fonctionner.
    Sinon essaye:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int sock = (int) &lParameter;
    connect(sock, ...);
    Mon blog: http://blog.bores.fr
    Mon wiki: http://bores.fr/wiki
    Mes programmes libres: https://github.com/tbores

  7. #7
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 75
    Points : 35
    Points
    35
    Par défaut
    Mais dans le CreateThread je doi mettre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CreateThread(NULL,0,Thread1(&sock)),NULL,0,&Thread);
    ?
    Mais sa marche pas erreur compilateur: Passing DWORD to argument 3 of CreateThread(.....).

  8. #8
    Membre régulier Avatar de psyphi
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Allemagne

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2006
    Messages : 119
    Points : 120
    Points
    120
    Par défaut
    Lis un peu la doc.
    Voila comment créer un thread sous windows:
    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
     
            DWORD  dwThreadID;
            if( CreateThread(NULL,
     
    			0,
     
    			(LPTHREAD_START_ROUTINE) ThreadFunction,
     
    			(LPVOID) TonParametreLeSocket,
     
    			0,
     
    			&dwThreadID) == NULL )
           {
     
    				display_error("Error.CreateThread");
     
    				return EXIT_FAILURE;
     
    	}
    et dans ta fonction de thread:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SOCKET socket = (SOCKET) parameter;
    Mon blog: http://blog.bores.fr
    Mon wiki: http://bores.fr/wiki
    Mes programmes libres: https://github.com/tbores

  9. #9
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 75
    Points : 35
    Points
    35
    Par défaut
    Ah oui maintenant j'ai passé le socket au thread j'ai meme fé un dans le main et un autre dans le thread pour s'assuer que c'est le meme socket et c'est le meme s donne la meme valeur mais le connect() ne marche pas toujours .(enfete merci por ton exemple sa ma aidé pour comprendre les threads)

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut


    parle un français correct stp et pas du SMS. C'est la règle du forum...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  11. #11
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 75
    Points : 35
    Points
    35
    Par défaut
    Je suis désolé pour la langue sms!
    En tous cas j'ai resolu mon probleme tout seule c'est que j'ai mis tout les declaration du socket dans le thread et aussi le WSAStartup mais bon sa mintersse pas juste de resoudre le probleme mais aussi de savoir ce qui cloche.et j'ai aussi une question si on utilise pas les events dans les threads
    si on utilise le Sleep et on donne une valeur dattente tres courte il se peux que les instructions dans le thead ne sexecute pas?

  12. #12
    Membre régulier Avatar de psyphi
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Allemagne

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2006
    Messages : 119
    Points : 120
    Points
    120
    Par défaut
    Si il y a un sleep dans ton thread, alors le thread va s´exécuter jusqu´au sleep, puis se "mettre en pause" un temps donné et ensuite va continuer son exécution.
    Renseigne toi sur l´ordonnancement des taches dans les systèmes d´exploitation.
    Mon blog: http://blog.bores.fr
    Mon wiki: http://bores.fr/wiki
    Mes programmes libres: https://github.com/tbores

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme avec Postgresql de connection a distance
    Par ToMs dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 14/04/2006, 10h37
  2. probleme de connection avec PHP
    Par i_shinji dans le forum Installation
    Réponses: 1
    Dernier message: 03/03/2006, 12h07
  3. [socket] Probleme avec connect
    Par sorry60 dans le forum Réseau
    Réponses: 12
    Dernier message: 16/11/2005, 22h01
  4. Réponses: 7
    Dernier message: 18/07/2005, 13h42
  5. Probleme de connection avec MSDE
    Par critok dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 02/04/2005, 00h20

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