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 :

socket TCP et temps d'attent pour une connexion?


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut socket TCP et temps d'attent pour une connexion?
    Bonjour,

    Je voudrais savoir si j'ai pu me connecter sans avoir dépassé un certain temps.
    J'ai essayé ça mais ça ne fonctionne pas comme voulu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     client = New TcpClient()
                client.Client.ReceiveTimeout = 100
     
                If client.Client.ReceiveTimeout = 100 Then
     
                    client.Connect(s_Adresse_IP, i_port_ip)
    end if
    Merci d'avance.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    avec la méthode aynchrone surement (beginconnect)

    les méthodes aynchrones démarrent un thread et appellent un callback fourni (méthode de retour, un peu comme un évènement) une fois l'action faite
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    ok et comment on fait pour ne ne pas dépasser un certain temps

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    ne rien faire dans le callback si le callback est appelé après le temps que tu désires en timeout
    enfin je pense car normalement il faut appeler endconnect dans le callback
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    je ne vois pas du tout comment faire!

    J'ai trouvé ça sur ce site mais il n'y a pas d'exemple.


    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
    Lancement de l'attente asynchrone 
    Me.SocketServer.BeginAccept(AddressOf ConnectionAcceptCallback, Me.SocketServer) 
     
    Le deuxième argument sera passé à la fonction connexionCallback, lorsque celle ci sera appelée, à travers la propriété AsyncState de IAsyncResult. Le premier argument est un objet de type AsyncCallback. AsyncCallback est un délégué, qui est le terme en .NET pour désigner un pointeur de fonction. Le constructeur prend comme argument une fonction ayant cette signature : 
    Sub connexionCallback(Dim asyncResult As IAsyncResult) 
     
    Retenez bien cette signature car elle servira pour toutes les fonctions de rappel des autres fonctions asynchrones. La fonction connexionCallback s'exécute dans un Thread séparé de celui de l'application principale (thread lancé par le système). Cette fonction prend comme argument un type IAsyncResult. L'interface IAsyncResult nous permet de retrouver l'objet que nous avons passé à la fonction BeginAccept tel qu'il était à travers sa propriété AsyncState. 
    object asyncResult.AsyncState 
     
     
     
    2. Mettre fin à l'attente
    Pour finir l'attente d'une connexion et pour finir d'accepter la connexion d'un client vous devez appeler la fonction EndAccept. 
    Fonction de rappel pour la connexion d'un client 
    Private Sub connexionAcceptCallback(ByVal asyncResult As IAsyncResult)
    	SocketClient = SocketServer.EndAccept(asyncResult)
    End Sub

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 271
    Par défaut
    Essai ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim tcp As TcpClient = New TcpClient
    Dim wh As System.Threading.WaitHandle = ar.AsyncWaitHandle
    Try 
        If Not ar.AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(5), false) Then
            tcp.Close
            Throw New TimeoutException
        End If
        tcp.EndConnect(ar)
    Finally
        wh.Close
    End Try

Discussions similaires

  1. [Débutant] Problème de temps de réponse pour une recherche d'articles
    Par Tazze-99 dans le forum VB.NET
    Réponses: 22
    Dernier message: 14/12/2011, 10h50
  2. Réponses: 0
    Dernier message: 19/07/2011, 16h50
  3. Temps d'exécution pour une procédure stockée PL/SQL Oracle 9
    Par strompakha dans le forum Administration
    Réponses: 3
    Dernier message: 18/05/2010, 14h09
  4. Réponses: 2
    Dernier message: 28/04/2009, 15h26
  5. Réponses: 20
    Dernier message: 10/07/2006, 16h53

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