[VB.net] Socket et thread

Résolu/Fermé
afrodje Messages postés 759 Date d'inscription mardi 13 mars 2007 Statut Membre Dernière intervention 22 janvier 2014 - 6 mars 2008 à 16:03
 Piano - 1 juil. 2008 à 14:35
Bonjour,

Je crée une classe "class_serveur". Mais aucun client n'arrive à se connecter. Il y a aucun message d'erreur.

Voici ma classe

Public Class Class_serveur
    Inherits System.Windows.Forms.Form

    'creation  du tube de communication en mode connecté
    Private socketServeur As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)

    'creation du point de rattachement de la connexion (ip + port)
    'nom d'hote du serveur et le client doit se connecter avec le nom d'hote du serveur
    Private ipend_serveur As New IPEndPoint(Dns.Resolve("localhost").AddressList(0), 6860)

    'socket intermediaire car on travail sur
    Dim mySocket As Socket
    Dim message(1024) As Byte

    Function connexion() As Boolean
        Try
            'attachement a la socket
            socketServeur.Bind(ipend_serveur)

            'ajout d'un commentaire
            ' rajouter la ligne -> Form_principale.TextBox_archive.Text &= vbNewLine & "En attente de client" & vbNewLine
            Form_principale.TextBox_archive.Text = "En attente de client"

            'ecoute d'une demande  (1 seul client)
            socketServeur.Listen(1)

            'connection serveur
            'creation du thread
            socketServeur.BeginAccept(AddressOf ConnectionAcceptCallback, Me.socketServeur)

            Return True
        Catch ex As Exception
            MsgBox("erreur connexion serveur")
        End Try
    End Function

    'fonction de callback accept(lancement de thread)
    Sub ConnectionAcceptCallback(ByVal asyncResult As IAsyncResult)


        'connection reussi
        mySocket = socketServeur.EndAccept(asyncResult)
        Form_principale.TextBox_archive.Text &= vbNewLine & "connexion reussi" & vbNewLine

        'connexion reussi alors on se met en receive constant et appelle de la fonction receivecallback
        mySocket.BeginReceive(message, 0, message.Length, SocketFlags.None, AddressOf receivecallback, socketServeur)

    End Sub

    Sub Sendcallback(ByVal asyncResult As IAsyncResult)
        Dim erreur As Integer
        erreur = mySocket.EndSend(asyncResult)
    End Sub

    Sub receivecallback(ByVal asyncResult As IAsyncResult)
        Dim erreur As Integer
        Dim message_decode As String

        erreur = mySocket.EndReceive(asyncResult)

        message_decode = System.Text.Encoding.ASCII.GetString(message)

        Form_principale.TextBox_archive.Text &= vbNewLine & message_decode & vbNewLine

        'le message est en attente de receive dans le thread 
        mySocket.BeginReceive(message, 0, message.Length, SocketFlags.None, AddressOf receivecallback, socketServeur)
        Array.Clear(message, 0, 1023)

    End Sub


End Class

A voir également:

1 réponse

afrodje Messages postés 759 Date d'inscription mardi 13 mars 2007 Statut Membre Dernière intervention 22 janvier 2014 168
19 mai 2008 à 15:00
auto reponses
0
hello,

et c'était quoi la la solution?

Merci ;-) ca m'intéresse
0