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

VB 6 et antérieur Discussion :

Winsock


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Par défaut Winsock
    Salut

    Je suis un peu confu sur l'utilisation de Winsock, j'ai entendu dire que il était nécessaire de doubler le handle de mon socket pour qu'il soit utilisé par un programme externe dont je lui passe le handle en paramètre. Dans ce cas-ci c'est un driver fossil que je démarre (Netfoss) mais il ne fonctionne pas, il renvoie une erreur, son concepteur m'a dit que l'erreur est qu'il ne trouve pas le handle. Pourtant je le lui passe bel et bien..

    De plus, les autres serveur telnet lui passe le handle en paramètre en l'appelant et ça fonctionne #1. Alors c'est quelque chose que je fais de pas comme il faut, mais je ne sais pas quoi ..

    Pourtant je fais un listen, puis ensuite une fois que c'est connecté dans ma sub Request après mon call Connect() je lance le programme en lui passant le paramètre avec winsock1.stockethandle

    Mais je dois oublier de faire quelque chose sûrement, mais je ne vois pas quoi ..

    Pourtant la connection s'établie bien et quand j'envoie des données, ça apparait bien dans la console de la fenêtre client ..

    Dabord, est-ce que ça se peut dupliquer un handle et dans quelle condition se sert-on de cela ?

    J'ai lu des doc sur winsock et je n'ai rien trouvé ou ils parlaient de dupliquer un handle, pas même un petit exemple de code pour le faire avec les api ou le contrôle winsock, alors je suis un petit peu désespéré hihi

    Merci

    Ah oui, j'ai observé la source d'un serveur telnet qui fonctionne bien avec netfoss et il duplique le handle, alors ça doit être ça qu'il faut faire j'imagine, mais je n'ai rien trouvé sur le sujet ..

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Par défaut
    hm, on dirait que j'ai un gros problème si personne ne peut m'aider

  3. #3
    Membre expérimenté Avatar de Mandalar
    Profil pro
    Étudiant
    Inscrit en
    Mai 2004
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2004
    Messages : 121
    Par défaut
    Désolé mais quand je lis ca je ne vois que des réflexions personnelles formulées a haute voix : le probleme n'est pas exposé clairement, tu donnes des suppositions en vrac alors qu'on sait meme pas de quoi tu parles
    En plus je ne m'y connais pas trop en winsock mais je pense que ceux qui s'y connaissent n'ont pas du tout comprendre non plus .
    Si tu pouvais reformuler ca aiderait je pense , et n'hésite pas a passer un bout de code qui pose probleme par exemple

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Par défaut
    ok, je vais recommencer

    Premièrement, j'utilise le driver fossil avec un serveur telnet existant: telsrv dans cette application il y a un textbox pour pouvoir exécuter justement ce driver en lui passant en paramètre le handle du socket et la node. Car c'est netfoss (le driver fossil) qui gère la connection par la suite, pour que un programme dos puisse communiquer sur internet.

    Moi je me suis dit, je vais faire mon propre serveur telnet et faire la même chose, alors j'ai créé un projet vb avec un contrôle winsock dessus, au form_load() je fais un winsock1.listen

    puis j'ai ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub winsock1_ConnectionRequest(ByVal requestID As Long)
     
          winsock1.Accept requestID
          shell("c:\nf.bat /n1 /h" & winsock1.sockethandle, vbnormal)
     
    End Sub
    nf.bat contient ce qu'il faut pour charger le driver en ayant le #node par /n et le # du handle avec /h il est appelé exactement comme ceci avec le programme telsrv

    Alors je me suis dit en faisant de la sorte ça devrait marcher et bien non ..
    Mais...il fonctionne qu'à moitié, car nf.bat charge 2 choses: 1) netfoss.com avec le # de la node et ensuite netfoss.exe avec le #node et le handle

    netfoss.com se charge bien, aucune erreur, par contre netfoss.exe fait une erreur et cette erreur, selon le concepteur de netfoss en personne est dû au fait qu'il ne trouve pas le handle .. pourtant je lui passe bien un # de handle, j'ai vérifié ...

    Ensuite après discussion, j'ai apprit que dans le code source de telsrv qui n'est pas disponible publiquement désolé .. je l'ai vu d'après un gars qui a payé la source, dans la source il a du code qui duplique le handle ... maintenant je me demandais si c'était pas seulement ça l'erreur ..

    Car la question est que, est-ce nécessaire de dupliquer le handle d'une socket lorsqu'on veut généralement passer le contrôle de la connexion à un programme externe ? est-ce que c'est la procédure à suivre en générale ?

    Alors voilà ou je bloque

    Est-ce plus clair ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Par défaut
    je crois que j'ai compris l'erreur, je dois passer le socket à l'application que j'apelle, je dois donc le dupliquer avec duplicatehandle()

    j'ai regardé l'api en question, mais je n'ai aucune idée comment l'utiliser, je n'ai pas trouvé d'exemple de code non plus et le nom des paramètres à passer à cette api me donne des boutons, je n'ai aucune idée comment obtenir les paramètres pour le lui passer.

    Je crois que c'est ce qui manque, car telsrv lui il duplique son handle avant de le passer à netfoss alors ça doit être ça mon erreur, sauf que je ne sais pas comment faire, alors si jamais quelqu'un aurait un exemple de code ça serait sympa

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Par défaut
    Ben alors :

    Personne ne peut m'aider ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 33
    Par défaut
    salut,
    ton erreur ne vien pas de ton handle tu doit faire un winsock.close avent le winsock.accept requestid moi je fait ca comme ca et je n'ai jamais eu de pb ici en tout les cas.

    la reponce est peu etre un peu tardive.

    leo

  8. #8
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    J'espère qu'AsmCode a trouvé après 6 mois...
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

Discussions similaires

  1. déterminer la version de Winsock installée
    Par BlueX_scf dans le forum Web & réseau
    Réponses: 7
    Dernier message: 24/02/2003, 10h23
  2. [VB6] [Winsock] Envoi de données
    Par CYFL dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 25/12/2002, 17h49
  3. [Winsock] Envoi et recupération d'une image
    Par arnolanf dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 29/11/2002, 08h49
  4. [VB6] [Winsock] Trouver un port libre
    Par Yann dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 14/10/2002, 11h23
  5. [Kylix] equivalent winsock avec kylix
    Par Victor dans le forum EDI
    Réponses: 2
    Dernier message: 08/05/2002, 07h43

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