Accueil > > > ASYNC TCP SOCKET
ASYNC TCP SOCKET
Information sur la source
Description
Classe de pour faciliter l'utilisation des sockets tcp en mode asynchrone. Je dois maintenant trouver le moyen de régler le problème des opérations inter-threads non valides. J'ai lu quelques sources sur des fonctions delegates, mais j'ai pas compris leur fonctionnement. Si vous en avez compris le fonctionnement, merci de m'aider ici ou par message privé ;)
Source
- Imports System
- Imports System.Net
- Imports System.Net.Sockets
-
- Public Class CAsyncTCPSocket
-
- #Region "Attributs"
- Private aSocket As Socket
- Private aTemporaryBuffer As Byte()
- Private aTemporaryBufferLenght As Integer
- #End Region
-
- #Region "Evènements"
- Public Event Connected()
- Public Event Disconnected()
- Public Event DataSended()
- Public Event DataArrival(ByVal Data As Byte(), ByVal Lenght As Integer)
- #End Region
-
- #Region "Constructeur"
- Sub New()
- Me.aTemporaryBufferLenght = 1024
- End Sub
- #End Region
-
- #Region "Parametrage"
- Public Property ReceiverLenght() As Integer
- Get
- Return Me.aTemporaryBufferLenght
- End Get
- Set(ByVal Lenght As Integer)
- Me.aTemporaryBufferLenght = Lenght
- End Set
- End Property
- #End Region
-
- #Region "Connexion"
- Public Sub Connect(ByVal Hostname As String, ByVal Port As Integer)
- Me.aSocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
- Me.aSocket.BeginConnect(New IPEndPoint(Dns.GetHostEntry(Hostname).AddressList(0), Port), AddressOf ConnectCallback, Nothing)
- End Sub
-
- Private Sub ConnectCallback(ByVal asyncResult As IAsyncResult)
- Me.aSocket.EndConnect(asyncResult)
- Call Receive()
- RaiseEvent Connected()
- End Sub
- #End Region
-
- #Region "Déconnexion"
- Public Sub Close()
- Me.aSocket.Shutdown(SocketShutdown.Both)
- Me.aSocket.Close()
- RaiseEvent Disconnected()
- End Sub
- #End Region
-
- #Region "Réception de données"
- Private Sub Receive()
- ReDim Me.aTemporaryBuffer(Me.aTemporaryBufferLenght)
- Me.aSocket.BeginReceive(Me.aTemporaryBuffer, 0, Me.aTemporaryBuffer.Length, SocketFlags.None, AddressOf ReceiveCallback, Nothing)
- End Sub
-
- Private Sub ReceiveCallback(ByVal ar As IAsyncResult)
- Me.aSocket.EndReceive(ar)
- RaiseEvent DataArrival(Me.aTemporaryBuffer, Me.aTemporaryBuffer.Length)
- Call Receive()
- End Sub
- #End Region
-
- #Region "Envoit de données"
- Public Sub Send(ByVal Data As String)
- Dim Buffer As [Byte]() = System.Text.Encoding.ASCII.GetBytes(Data)
- Me.Send(Buffer)
- End Sub
-
- Public Sub Send(ByVal Data As Byte())
- Me.aSocket.BeginSend(Data, 0, Data.Length, SocketFlags.None, AddressOf SendCallback, Nothing)
- End Sub
-
- Private Sub SendCallback(ByVal ar As IAsyncResult)
- Me.aSocket.EndReceive(ar)
- RaiseEvent DataSended()
- End Sub
- #End Region
-
- End Class
Imports System
Imports System.Net
Imports System.Net.Sockets
Public Class CAsyncTCPSocket
#Region "Attributs"
Private aSocket As Socket
Private aTemporaryBuffer As Byte()
Private aTemporaryBufferLenght As Integer
#End Region
#Region "Evènements"
Public Event Connected()
Public Event Disconnected()
Public Event DataSended()
Public Event DataArrival(ByVal Data As Byte(), ByVal Lenght As Integer)
#End Region
#Region "Constructeur"
Sub New()
Me.aTemporaryBufferLenght = 1024
End Sub
#End Region
#Region "Parametrage"
Public Property ReceiverLenght() As Integer
Get
Return Me.aTemporaryBufferLenght
End Get
Set(ByVal Lenght As Integer)
Me.aTemporaryBufferLenght = Lenght
End Set
End Property
#End Region
#Region "Connexion"
Public Sub Connect(ByVal Hostname As String, ByVal Port As Integer)
Me.aSocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
Me.aSocket.BeginConnect(New IPEndPoint(Dns.GetHostEntry(Hostname).AddressList(0), Port), AddressOf ConnectCallback, Nothing)
End Sub
Private Sub ConnectCallback(ByVal asyncResult As IAsyncResult)
Me.aSocket.EndConnect(asyncResult)
Call Receive()
RaiseEvent Connected()
End Sub
#End Region
#Region "Déconnexion"
Public Sub Close()
Me.aSocket.Shutdown(SocketShutdown.Both)
Me.aSocket.Close()
RaiseEvent Disconnected()
End Sub
#End Region
#Region "Réception de données"
Private Sub Receive()
ReDim Me.aTemporaryBuffer(Me.aTemporaryBufferLenght)
Me.aSocket.BeginReceive(Me.aTemporaryBuffer, 0, Me.aTemporaryBuffer.Length, SocketFlags.None, AddressOf ReceiveCallback, Nothing)
End Sub
Private Sub ReceiveCallback(ByVal ar As IAsyncResult)
Me.aSocket.EndReceive(ar)
RaiseEvent DataArrival(Me.aTemporaryBuffer, Me.aTemporaryBuffer.Length)
Call Receive()
End Sub
#End Region
#Region "Envoit de données"
Public Sub Send(ByVal Data As String)
Dim Buffer As [Byte]() = System.Text.Encoding.ASCII.GetBytes(Data)
Me.Send(Buffer)
End Sub
Public Sub Send(ByVal Data As Byte())
Me.aSocket.BeginSend(Data, 0, Data.Length, SocketFlags.None, AddressOf SendCallback, Nothing)
End Sub
Private Sub SendCallback(ByVal ar As IAsyncResult)
Me.aSocket.EndReceive(ar)
RaiseEvent DataSended()
End Sub
#End Region
End Class
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
raw socket et protocole TCP/IP [ par robertmouac ]
Bonjour tout le monde. Je suis en train de coder une version simplifier du protocol TCP/IP en raw socket. Je formate et deformate bien les trames (ve
raw socket et protocole TCP/IP [ par robertmouac ]
Je suis en train de coder une version simplifier du protocol TCP/IP en raw socket. Je formate et deformate bien les trames (verif avec ethreal). Le pr
Socket TCP [ par Leo_Robotic_Passion ]
Bonjour a tousCe source socket TCP tiré des codes de vbfrance (merci aux auteurs au passage) regroupe un client et un serveur ! J'ai essayé de s
Problème Socket asynchrone [ par pictom41 ]
Bonjour, J'ai un problème pour un TP de classe. Je dois pratiquer une connexion et une action spécifique sur un serveur a socket asynchrone. J'ai choi
Timeout TCP sur les sockets [ par shackleton1986 ]
Je suis en train de faire des tests sur les sockets TCP dans le framework 2.0 et j'ai remarqué quelque chose d'assez curieux...Je voulais savoir à que
Serveur, Client, FTP, Socket , Stream [ par dbx99 ]
Bonjour,ma question a pour but de m'orienter dans la bonne direction.Je souhaite créer une application serveur à laquelle on ne pourra accéder que par
Utilisation d'un socket [ par ratala ]
Bonjour tout le monde, je cherche a créer un bot pour un jeux, mais en utilisant sa connexion. Je connais le numero du socket, quelqun a une idée de c
sérialisation et sockets [ par Kite37 ]
Bonjour ! Alors voici ma question : Pour le besoin de mon logiciel, je me retrouve dans l'obligation d'envoyer des objets complet via socket.Ceux-ci n
autoformation socket [ par big wallace ]
salut tous le monde,voila je vodrais si possible des cours autoformation en programmation socket,& merci d'avance .
TCP/IP Modbus pour Automate [ par snakzbenjy ]
Bonjour à tous,Alors voilà je suis en stage (BAC+2) et celà fait plusieurs jours que je m'arrache les cheveux.Je doit faire un petit programme en Visu
|
Derniers Blogs
XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Je m'y prends un peu tard je sais, mais bon je suis développeur web et donc hyper fainéant ! Toujours dans le cadre des technologies émergentes, ici HTML5, parce qu'on aime HTML5 chez Wyg , nous seront présent, le vieux ( Aurélien V.) et moi, pour pr...
Cliquez pour lire la suite de l'article par Gio [WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|