IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Blocage des threads


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 12
    Points : 6
    Points
    6
    Par défaut Blocage des threads
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Imports System
    Imports System.Net
    Imports System.Net.Sockets
    Imports System.Threading
    Imports System.Text
    Imports System.IO
     
    Public Class Form1
        Dim temp2(1024) As Byte
        Dim i As Integer
        Dim masock As Socket
        Dim temp(1024) As Byte
        Dim msg, msg2 As String
     
        'premiere chose je me conecte en envoyant un pseudonyma
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            masock.BeginConnect(New IPEndPoint(IPAddress.Parse(adresseip.Text), 12000), AddressOf connexionConnectCallback, masock)
            temp = Encoding.ASCII.GetBytes(nickname.Text)
            'envoi des info de connexion ip+pseudo
            masock.BeginSend(temp, 0, temp.Length, SocketFlags.None, AddressOf SendCallback, masock)
            'lancer le thread pour recevoir les messages envoyer par le serveur
            masock.BeginReceive(temp2, 0, temp2.Length, SocketFlags.None, AddressOf ReceiveCallback, masock)
            msg2 = Encoding.ASCII.GetChars(temp)
            'affichage dans une listview
            list.Items.Add(msg2)
     
        End Sub
     
        Private Sub connexionConnectCallback(ByVal asyncResult As IAsyncResult)
            masock.EndConnect(asyncResult)
        End Sub
        Private Sub ReceiveCallback(ByVal asyncResult As IAsyncResult)
            'j'ai mai autre beginreceive pour realiser une boucle
            masock.EndReceive(asyncResult)
            masock.BeginReceive(temp2, 0, temp2.Length, SocketFlags.None, AddressOf ReceiveCallback, masock)
        End Sub
        Private Sub SendCallback(ByVal asyncResult As IAsyncResult)
            Dim send As Integer = masock.EndSend(asyncResult)
        End Sub
     
        Private Sub addmsg(ByVal msg2 As String)
     
        End Sub
        Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
            temp = Encoding.ASCII.GetBytes(message.Text)
            masock.BeginSend(temp, 0, temp.Length, SocketFlags.None, AddressOf SendCallback, masock)
        End Sub
     
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
     
            masock.Close()
        End Sub
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            masock = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
        End Sub
    End Class

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 156
    Points : 25 075
    Points
    25 075
    Par défaut
    deja edit ton post et utilises la balises code qui permet de respecter l'indendation et de coloriser un peu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Imports System.Text
    Imports System.IO
    Public Class Form1
        Dim receptionhread As New Thread(AddressOf reception)
        Dim masock As Socket
        Dim temp(1024) As Byte
    quand meme plus lisible


    de plus vu que tu utilises les méthodes asynchrones (beginsend, beginreceive ...) des sockets, un thread n'est pas nécessaire beginquelque chose instancie dejà un thread ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut
    Citation Envoyé par sperot51 Voir le message
    deja edit ton post et utilises la balises code qui permet de respecter l'indendation et de coloriser un peu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Imports System.Text
    Imports System.IO
    Public Class Form1
        Dim receptionhread As New Thread(AddressOf reception)
        Dim masock As Socket
        Dim temp(1024) As Byte
    quand meme plus lisible


    de plus vu que tu utilises les méthodes asynchrones (beginsend, beginreceive ...) des sockets, un thread n'est pas nécessaire beginquelque chose instancie dejà un thread ...

    j'essie de verifie tn code malgee son illisibilité


    dans ton code tu travail avec un mode asynchrone
    c'est a dire que ta pas besoin d'un thread, la gestion des threads est automatiquement faite.
    essai plustot recontruire ton code

    sockets asynchrone
    conseil::
    essai d'appeller beginrecieve toujour dans endRecieve pour boucle sur la reception

  4. #4
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Merci POur les reponses

    quand j'ai essayer avec seulement l'option d'envoi sa marche
    mais quand je veux reunir les deux des que je me connect , le programme commence a afficher mon premier message jusqu'a ce qu'il plante
    comme s'il fait receive sur ce que j'ai envoyé

    sinon je sais pas comment metre les deux fonction receive et send pour que receive soit executer en boucle et que send s'execute avec le click bouton

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    svp comment faire pour que beginreceive se fait en boucle

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 156
    Points : 25 075
    Points
    25 075
    Par défaut
    dans le principe, je crois qu'il faut faire beginreceive
    en cas de receive tu arrives sur le callbak dans lequel tu fais endreceive et tu lis les données puis il faut refaire beginreceive à cet endroit, donc ca boucle
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    oui c'est ce q ue j'ai fait mais mon client envoie des messages mais il ne recoit rien !

  8. #8
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut
    essai d'appel toutes tes focntions (fcts reception, fct de send,... )apres etablisement de la connexion c'est à dire dans le connexionConnectCallback

Discussions similaires

  1. Appel d'un fonction C sous Python et blocage des autres threads
    Par mkrzemin dans le forum Interfaçage autre langage
    Réponses: 3
    Dernier message: 07/02/2008, 14h52
  2. Une question à propos des thread
    Par tscoops dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/11/2003, 14h03
  3. Variable globale / Propriété des threads
    Par rgarnier dans le forum XMLRAD
    Réponses: 4
    Dernier message: 03/10/2003, 10h49
  4. [reseaux] Gestion des threads en perl
    Par totox17 dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 28/11/2002, 09h40
  5. Programmer des threads
    Par haypo dans le forum C
    Réponses: 6
    Dernier message: 02/07/2002, 13h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo