[Contrôle winsock] en VB

Utilisateur anonyme -  
 Utilisateur anonyme -
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.
A voir également:

4 réponses

swed
 
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.
0
Utilisateur anonyme
 
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 ?
0
Utilisateur anonyme
 
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...
0
Utilisateur anonyme
 
Je remonte le sujet..
0