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

Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 19 mars 2007 à 10:54 - Dernière réponse : Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention
- 19 mars 2007 à 12:55
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]-->
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 19 mars 2007 à 12:33
3
Merci
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

Merci Renfield 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

Commenter la réponse de Renfield
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 19 mars 2007 à 11:07
0
Merci
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
Commenter la réponse de jrivet
NHenry 14250 Messages postés vendredi 14 mars 2003Date d'inscription 10 août 2018 Dernière intervention - 19 mars 2007 à 11:08
0
Merci
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
Commenter la réponse de NHenry
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 19 mars 2007 à 11:17
0
Merci
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
Commenter la réponse de Polack77
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 19 mars 2007 à 11:26
0
Merci
Salut,
Va voir ici pour le principe

@+: Ju£i?n
Pensez: Réponse acceptée
Commenter la réponse de jrivet
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 19 mars 2007 à 11:49
0
Merci
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
Commenter la réponse de Polack77
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 19 mars 2007 à 12:55
0
Merci
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
Commenter la réponse de Polack77

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.