Gestion de socket en vb.net

Contenu du snippet

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)

A voir également

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.