[Contrôle winsock] en VB

Bonsoir,

Je suis en train d'apprendre l'utilisation du_ contrôle winsock en visual basic en faisant une petite application client/serveur très basique.

Lorsque que je met l' IP locale cela marche bien je peux envoyer et recevoir des données et la connexion s'effectue instantanément. En revanche quand je met l'adresse IP d'un ami (pour effectuer le test) ; IP qu'il m'a donné bien sur en temps réel, la connexion ne se fait pas... Quelqu'un à une idée avant que je poste mon code ?

Merci par avance.

4 réponses

  1. Bonjour,
    Avant de poster ton code, il faudrait décrire d'avantage ton problème, afin que l'on puisse diagnostiquer.

    "la connexion ne se fait pas" --> c'est à dire ?
    Quel est l'erreur ?
    Quel appel de quelle fonction ne fonctionne pas ?
    Quel est le code retour obtenu lors de l'appel à cette fonction ?
    Que dit la documentation Winsock à propos de ce code retour ?
    Tu tombes dans un genre de timeout, ou alors l'erreur est instantanée ?

    D'avance, merci pour ces précisions.
    Cordialement,
    Marc.
    1. Merci bien de me proposer ton soutient.

      Et bien le problème est que je n'ai aucune erreur, aucun message. En local la connexion est instantanée et les échanges fonctionnent. Mais avec une autre Ip je n'ai pas le message qui me signe la connexion établie (message que j'ai programmé dans l'évènement "windock_connect").

      Une idée ?
      1. Je poste mon code malgré tout :

        *** SERVEUR ***
        Option Explicit
        'w est le nom du contôle winsock
        Private Sub bouton_quitter_Click()
            w.Close
            w.LocalPort = 0
            End
        End Sub
        
        Private Sub Form_Load()
            w.Close
            w.LocalPort = 0
            w.LocalPort = 4567
            w.RemotePort = 4568
            w.Listen
        End Sub
        
        Private Sub Form_Terminate()
            w.Close
            w.LocalPort = 0
        End Sub
        
        Private Sub w_Close()
            Call Form_Load
        End Sub
        
        Private Sub w_ConnectionRequest(ByVal requestID As Long)
            w.Close
            w.Accept requestID
        End Sub
        
        Private Sub w_DataArrival(ByVal bytesTotal As Long)
            Dim données As String
            w.GetData données
            If données = "message" Then
                MsgBox "test", vbExclamation, "Titre"
            End If
        End Sub
        


        *** CLIENT ***
        Option Explicit
        
        Private Sub bouton_connexion_Click()
            w.Close
            w.RemotePort = 0
            w.LocalPort = 0
            w.Connect "XX.XX.XX.XX", 4567
            Timer1.Enabled = True
        End Sub
        
        Private Sub bouton_déconnexion_Click()
            w.Close
            w.RemotePort = 0
        End Sub
        
        Private Sub bouton_message_Click()
            w.SendData "message"
        End Sub
        
        
        Private Sub Timer1_Timer()
            If w.State <> 7 Then
                MsgBox "Trop long !!!"
                Call bouton_déconnexion_Click
            End If
            Timer1.Enabled = False
        End Sub
        
        Private Sub w_Connect()
            MsgBox "Connexion réussie", vbInformation
        End Sub
        
        Private Sub w_ConnectionRequest(ByVal requestID As Long)
            w.Close
            w.Accept requestID
        End Sub
        
        Private Sub w_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
            MsgBox Description
        End Sub
        


        Si cela peut aiguiller l'un d'entre vous...