Utilisateur anonyme
-
24 mars 2014 à 22:07
Utilisateur anonyme -
26 mars 2014 à 16:40
Bonjour,
j'essaie de créer une application client/serveur pour effectuer des actions à distance (dans un premier temps en local). J'ai donc crée ce code pour le client :
Sub Connexion() Dim port As String = "8080" Dim ip As String = "127.0.0.1" Dim MonSocketClient As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) Dim MonEP As IPEndPoint = New IPEndPoint(IPAddress.Parse(ip), 8080) MonSocketClient.Connect(MonEP) Dim MesBytes(255) As Byte Dim BytesRecus As Integer = MonSocketClient.Receive(MesBytes) Dim MonString As String = System.Text.Encoding.ASCII.GetString(MesBytes) MsgBox(MonString) MonSocketClient.Close() End Sub
Private Sub FormClient_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim ThreadConnexion As New Threading.Thread(AddressOf Connexion) ThreadConnexion.Start() End Sub
Ainsi que le code suivant pour le serveur :
Sub Connexion() Dim port As String = "8080" Dim ip As String = "127.0.0.1" Dim MonSocketServeur As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) Dim MonEP As IPEndPoint = New IPEndPoint(IPAddress.Parse(ip), 8080) MonSocketServeur.Bind(MonEP) 'Lie le socket à cette IP MonSocketServeur.Listen(1) 'Se met en mode écoute Dim SocketEnvoi As Socket = MonSocketServeur.Accept() 'Bloquant tant que pas de connexion Dim MesBytes As Byte() = System.Text.Encoding.ASCII.GetBytes("Bonjour") Dim BytesEnvoyes As Integer = MonSocketServeur.Send(MesBytes) MonSocketServeur.Close() End Sub Private Sub FormServeur_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim ThreadConnexion As New Threading.Thread(AddressOf Connexion) ThreadConnexion.Start() End Sub
Donc le but est de faire apparaitre un messagebox sur mon client avec le texte que le serveur a envoyé. Le problème c'est que lorsque j'envoie les Bytes avec mon serveur, j'obtiens l'erreur suivante :
"Une requête d'envoi ou de réception de données n'a pas été autorisée car le socket n'est pas connecté et (lors de l'envoi sur un socket datagramme en utilisant un appel sendto) aucune adresse n'a été fournie" à la ligne :
Dim BytesEnvoyes As Integer = MonSocketServeur.Send(MesBytes)
J'ai vu que l'on pouvait mettre des arguments de mémoire tampon avec la commande Send mais dans l'exemple que j'ai trouvé, il n'y a aucun paramètre supplémentaire.
Quelqu'un saurait-il d'où vient le problème ?
Merci.
A voir également:
Envoi de données non autorisée car le socket n'est pas connecté