Liste chainé de WinSock (VB6) [Résolu]

Signaler
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019
-
Polack77
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019
-
Bonjour,

Comme le dit le titre je veux crée une liste chaîné de WinSock (grasse à deux
Class)

Ce que j'ai pour le moment :




2 Classes :

    1ére Classe : Nommé "ClassMaillonWinSock" qui
contient (pour le moment car pas fini)

       Private Suivant As ClassMaillonWinSock

       Private Client As Winsock


       Private Sub Class_Initialize()

           Set Suivant = Nothing

           Set Client = Nothing

       End Sub


       Public Function SuivantExist() As Boolean

           If Suivant <> Nothing
Then

              
SuivantExist = True

           Else

              
SuivantExist = False

           End If

       End Function


       Public Function RefSuivant() As
ClassMaillonWinSock

           RefSuivant = Suivant

       End Function

      

       Public Function CréeSuivant() As
ClassMaillonWinSock

           Set Suivant = New
ClassMaillonWinSock

           CréeSuivant = Suivant

       End Function

      

       Public Sub AcceptConnection(ByVal requestID As
Long)

           Set Client = New Winsock
**************************************

           Client.Accept requestID

       End Sub


    2éme Classe : Nommé "ClassMaillonWinSock" qui
contient (pour le moment car pas fini)

        Private Maillon As ClassMaillonWinSock

        Private NbMaillon As Long


        Private Sub Class_Initialize()

            Set Maillon = Nothing

        End Sub


        Public Sub
CréeClientAcceptConnexion(ByVal requestID As Long)

        Dim EnCours As ClassMaillonWinSock

            If NbMaillon = 0 Then

       
        Set Maillon = New
ClassMaillonWinSock

       
        Set EnCours = Maillon

            Else

       
        Set EnCours = Maillon

       
        While EnCours.SuivantExist()

       
            Set EnCours
= Maillon.RefSuivant

       
        Wend

       
        EnCours.CréeSuivant

            End If

           
EnCours.AcceptConnection requestID

            NbMaillon = NbMaillon
+ 1

        End Sub


Bon voila mon code actuel, mon problème se pose dans ma classe 1 (nommé
"ClassMaillonWinSock") à la ligne "Set Client = New
Winsock" (la ligne marqué *)


Bon enfin ma question :

Un WinSock est un objet donc je devrais pouvoir faire un truc du genre. Pourquoi
le compilo me retourne l'erreur "Invalide use of New keyword" ????


J'ai une solution temporaire<!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600"
o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f"
stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" alt="" style='width:11.25pt;
height:11.25pt'>
<v:imagedata src="file:///C:/DOCUME~1/Vincent/LOCALS~1/Temp/msoclip1/01/clip_image001.gif"
o:href="http://www.vbfrance.com/imgs2/smile_angry.gif"/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--> mais cela ne me plais pas du tout (mais
alors vraiment pas) : Crée une form contenant un WinSock, et
crée un objet Form dans ma classe, basé bien évidemment sur ce form.

Si quelqu'un à une autre façon de faire je suis preneur à 2000%.





Remarque : Je veux une liste chaîné pour que l'ajout et la suppression
d'élément soit simple à gérer (alors qu'avec les 'index' je me retrouve
rapidement avec un tableau 'troué' commencent en 12 et terminant en 15547 « bien
sure j'exagéré au niveau des valeurs ». Ce qui forcément ne me plais pas).


Merci par avance



<!--[if gte vml 1]><v:shape
id ="_x0000_i1026" type="#_x0000_t75" alt="" style='width:11.25pt;height:11.25pt'>
<v:imagedata src="file:///C:/DOCUME~1/Vincent/LOCALS~1/Temp/msoclip1/01/clip_image002.gif"
o:href="http://www.vbfrance.com/imgs2/smile_big.gif"/>
</v:shape><![endif]-->
<!--[if !vml]-->
<!--[endif]-->
Amicalement <!--[if gte vml 1]><v:shape
id="_x0000_i1027" type="#_x0000_t75" alt="" style='width:11.25pt;height:11.25pt'>
<v:imagedata src="file:///C:/DOCUME~1/Vincent/LOCALS~1/Temp/msoclip1/01/clip_image002.gif"
o:href="http://www.vbfrance.com/imgs2/smile_big.gif"/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]-->

7 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
61
tu peux utiliser une Collection d'objets Winsocks...

je te conseille d'utiliser la classe Winsock qui se trouve ici :
www.vbip.com

ainsi, pas besoin de Form, u aura un objet (seul) et qui est plus performant que le controle Winsock, qui plus est ^^

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
46
Salut,
Tu ne peux pas faire un New sur des objets Winsock.
En revanche ce que tu peux faire c'est un Tableau de Winsocks
Si par exemple sur une feuille tu place un Winsock avec la propriété index à 0 (appelons le OWin) tu pourras à tout moment au lieu de faire un New faire un Load OWin(OWin.Count)

CE qui te permet ensuite de passer par un Property Set pour le passer à tes classes (tout ceci n'est qu'une iée et je ne suis pas sur que cela te conviennes)

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
14670
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
28 mars 2020
139
Bonjour


Tu ne peux pas créer de Winsock par New, WinSock est un controle, donc lié à une Form.

Il est plus facile de batiser quelqu'un que de le convertir.(surtout en programmation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019

Controle???
Quel est la différance entre un controle et un objet pour moi c'étais pareil???

Oui je l'ai déjà fais avec l'index mais cela ne me plais pas. Pour le momant je suis en train de faire une forms sur la quel je vais basé des objets dans ma liste chainé (du coup je pense ne pas faire ma classe "ClassMaillonWinSock", au faite ma façon de faire est la bonne c'est la 1ér liste chainé en VB que je fais).
Remarque : je suis en train de faire du débugage sur les classe fournis plus haut je ne les ais fournis que pour illustrer ma question.

Amicalement
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
46
Salut,
Va voir ici pour le principe

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019

Merci mais je connais le principe d'une liste chainé (j'ai ais fais plein mais en C et C++ avec des structures et des pointeurs) je voulais juste confirmer que ma méthode étais le bonne en VB car le fais de ne pas avoir de pointeur ca me perturbe, mais je pense bien faire.
Si non pour le momant je fais une classe chaine avec des maillons de form. Ce qui ne me plais pas vraiment car je ne veux en aucain cas afficher ma chaine (bon c'est vrais que temps que ca marche mais bon...)
Ma question est plutôt : Y a t'il possibilité de construire une chaine de winsock sans faire une chaine de forms???

Amicalement
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019

Merci

Ca à l’aire pas mal du tout mais un peut complexe à comprendre (oui j'aime bien
comprendre ce que j'utilise)

En tout cas j'ai ma réponse donc un grand MERCI.

Ce que je comprend aussi (puisque d'autre se sont fatiguer à re-faire un
WinSock) c'est qu'il n'est pas possible d'utilisé ce composant comme objet (en dehors
d'une form bien sure)






Amicalement