MODULE - WINSOCK STATE

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 9 août 2007 à 08:59
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 - 9 août 2007 à 18:20
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/43715-module-winsock-state

cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
9 août 2007 à 18:20
Ya aussi ça :

Public Function WinSocketState(ByRef Socket As Winsock) As String
WinSocketState = Split("Fermé.,Ouvert.,En écoute ...,En Attente ...,Résolution DNS ...,Hote résolu !,Connexion ...,Connecté.,Fermeture ...,Erreur !", ",")(Socket.State)
End Function

Ce n'est pas plus court mais il faut le connaitre rien que pour sa syntaxe particuliere.

@+
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
9 août 2007 à 18:16
Je pense surtout que ce code serait mieu chez codyx.org car il faut avoir au moins 5 lignes de code (hors declaration) pour figurer dans la rubrique "code"

Merci de ta comprehension

@+
cs_miata Messages postés 86 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 19 août 2008
9 août 2007 à 09:02
Merci pour tes codes !
Et dire que je faisais encore pire que le classic, j'utilisais des IF pour chaque état :/ mon split comparé à mes If était nettement meilleur :D

Mais merci pour les 2 premiers code !
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
9 août 2007 à 08:59
Je pense qu'il est préférable de passer le State du Socket en parametre plutot que le Socket lui même. C'est personnel, certes, mais ca rend la chose plus facilement réutilisable (pas lié au composant Socket).

Voici des implémentations différentes de la chose.

encore plus court:

Public Function WinSocketState(ByVal veState As StateConstants) As String
WinSocketState = Choose(1 + veState, "Fermé.", "Ouvert.", "En écoute ...", "En Attente ...", "Résolution DNS ...", "Hote résolu !", "Connexion ...", "Connecté.", "Fermeture ...", "Erreur !")
End Function

le plus proche de ton SPlit, en plus efficace :

Public Function WinSocketState(ByVal veState As StateConstants) As String
Static zStates As Variant
If Not IsArray(zStates) Then
zStates = Array("Fermé.", "Ouvert.", "En écoute ...", "En Attente ...", "Résolution DNS ...", "Hote résolu !", "Connexion ...", "Connecté.", "Fermeture ...", "Erreur !")
End If
WinSocketState = zStates(veState)
End Function


enfin, le code "classique" :

Public Function WinSocketState(ByVal veState As StateConstants) As String
Select Case veState
Case StateConstants.sckClosed
WinSocketState = "Fermé."
Case StateConstants.sckOpen
WinSocketState = "Ouvert."
Case StateConstants.sckListening
WinSocketState = "En écoute..."
Case StateConstants.sckConnectionPending
WinSocketState = "En Attente..."
Case StateConstants.sckResolvingHost
WinSocketState = "Résolution DNS..."
Case StateConstants.sckHostResolved
WinSocketState = "Hôte résolu !"
Case StateConstants.sckConnecting
WinSocketState = "Connexion..."
Case StateConstants.sckConnected
WinSocketState = "Connecté."
Case StateConstants.sckClosing
WinSocketState = "Fermeture..."
Case Else
WinSocketState = "Erreur !"
End Select
End Function
Rejoignez-nous