Ce bout de code permet de gérer des sockets automatiquement, en effet on peux créer autant de socket que l'on souhaite et une classe container gère la disponibilité des sockets
Ainsi associé a du multithread on peut parallélisé les sockets en sachant leur statuts
Source / Exemple :
Public Class C_SOCKET
Public SOCKET_SOCK As System.Net.Sockets.NetworkStream
Public SOCKET_STATE As String = "Free"
End Class
Public Class C_STREAM
' Adresse Ip du serveur au format texte EX "127.0.0.1"
Private STREAM_IP As String
' Port du server
Private STREAM_PORT As String
' Nombre Max de socket
Private STREAM_MAX As Integer
' Tableau de 32 Connexion potentiel
Private STREAM_UNIT() As C_SOCKET
'Init des sockets stream plus blocage des socket au dessus de max
Public Sub New(ByVal IP As String, ByVal PORT As Int32, Optional ByVal MAX As Int32 = 16)
Array.Resize(Me.STREAM_UNIT, MAX)
Me.STREAM_IP = IP
Me.STREAM_PORT = PORT
For i = 0 To MAX - 1
Me.STREAM_UNIT(i) = New C_SOCKET
Next
End Sub
'Ferme le socket envoyé en paramatres
Public Sub STREAM_CLOSE_STREAM(ByVal This_Stream As C_SOCKET)
This_Stream.SOCKET_SOCK.Close()
This_Stream.SOCKET_STATE = "Free"
End Sub
'Creer un nouveau socket stream si un sock est dispo
Public Function STREAM_NEW_STREAM()
For Each Line In Me.STREAM_UNIT
If (Line.SOCKET_STATE = "Free") Then
Line.SOCKET_STATE = "Used"
Line.SOCKET_SOCK = New System.Net.Sockets.TcpClient(Me.STREAM_IP, Me.STREAM_PORT).GetStream
Return Line
Exit For
End If
Next
Return False
End Function
End Class
Conclusion :
Pour l'appeler très simple :
DIM SERVER_STREAM As New C_STREAM("127.0.0.1", 80)
Dim O_SOCKET As C_SOCKET = SERVER_STREAM.STREAM_NEW_STREAM()
Dim socket as New System.Net.Sockets.NetworkStream = O_SOCKET.SOCKET_SOCK
On en veux un deuxieme:
Dim O_SOCKET2 As C_SOCKET = SERVER_STREAM.STREAM_NEW_STREAM()
Dim socket2 as New System.Net.Sockets.NetworkStream = O_SOCKET2.SOCKET_SOCK
Quand on en a fini avec :
SERVER_STREAM.STREAM_CLOSE_STREAM(socket)
SERVER_STREAM.STREAM_CLOSE_STREAM(socket2)
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.