Autosocket, un clone du contrôle winsock en .net


Description

Dans le Framework .NET, il ya une classe Socket dans l'espace de noms System.Net.Sockets.Socket qui marche bien, mais qui ne lance pas d'événements. Il faut en permanence vérifier l'état du socket, c'est à dire si des données sont disponibles, s'il y a une connexion en attente... AutoSocket est donc une classe qui expose les méthodes les plus utilisées de la classe Socket (Send, Connect, Listen, etc), tout en la simplifiant avec des événements. L'événement Close se produit quand le socket se déconnecte, avec un message de l'erreur s'il y en a une; l'événement DataArrival, semblable à celui du contrôle WinSock qui se produit quand des données arrivent et l'événement Connect qui est explicite. L'utilisation des événements permet de simplifier beaucoup la classe socket: pas besoin de vérifier les connexions en attente et d'appeller Accept(), ni de vérifier les données disponibles, tout est automatique.

Source / Exemple :


'Pour utiliser le socket

'client:
Dim socket As New AutoSocket()
'pour se connecter:
socket.Connect( New IPEndPoint( IPAddress.Parse("<adresse IP>"), <port> ))

'server
Dim socket As New AutoSocket( New IPEndPoint( IPAddress.Parse("<adresse IP locale>"), <port> ) )
'pour se mettre en écoute:
socket.Listen()

'client/server

'pour envoyer des données:
Dim data As Byte()
socket.Send( data )

'pour recevoir des données:
AddHandler socket.DataArrival,  socket_DataArrival

Private Sub socket_DataArrival( sender As Object, data As Byte() )
     'utiliser les données
End Sub

'pour voir la progression de l'envoi:
AddHandler socket.DataDeparture, socket_DataDeparture
AddHandler socket.SendComplete, socket_SendComplete

Private Sub socket_DataDeparture( sender As Object, e as DataDepartureEventArgs )
     'envoyé e.CurrentBytesSent sur e.TotalBytes
End Sub

Private Sub socket_SendComplete( sender As Object, e as EventArgs )
     'l'envoi est terminé
End Sub

Conclusion :


La classe AutoSocket peut être améliorée mais toute la base pour écouter les événements de sockets est présente et testée, il est facile d'ajouter un événement, comme par exemple l'arrivée de données hors-bande ou la fin d'un envoi de données.

Codes Sources

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.