Les sockets en vb.net

Signaler
Messages postés
3
Date d'inscription
mercredi 29 juin 2011
Statut
Membre
Dernière intervention
17 juin 2012
-
Messages postés
14759
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 janvier 2021
-
j'ai un problème dans mon programme si qlq1 peut m'aider:

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

voila le code:

pour serveur:

Imports System.Net
Imports System.Net.Sockets

Public Class ServeurTCP

Dim sock As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
Dim sockcon As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
Dim rec As Integer
Dim str As String
Dim A(1000) As Byte
Dim B(1000) As Byte


Private Sub btEcouter_Click(sender As Object, e As EventArgs) Handles btEcouter.Click
If porttext.Text <> "" Then
Dim Adr As New IPEndPoint(0.0, porttext.Text)
sock.Bind(Adr)
sock.Listen(9)
sockcon = sock.Accept()

ChatGroup.Visible = True
btEcouter.Enabled = False
Timer1.Start()
Timer1.Enabled = True
Else
MsgBox("Veuillez spécifier un numéro de port ")
End If


End Sub

Private Sub btArreter_Click(sender As Object, e As EventArgs) Handles btArreter.Click
sock.Close()
sockcon.Close()
End Sub


Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick

rec = sock.Receive(B)
If rec Then
str = System.Text.Encoding.ASCII.GetString(B)
messagestext.Text += vbCrLf + "Client : " + str
End If

End Sub

Private Sub btEnvoyer_Click(sender As Object, e As EventArgs) Handles btEnvoyer.Click

A = System.Text.Encoding.ASCII.GetBytes(msgenv.Text + "$")
messagestext.Text += vbCrLf + "Moi : " + msgenv.Text
sock.Send(A)
End Sub
End Class

pour client:

Imports System.Net
Imports System.Net.Sockets


Public Class ClientTCP

Dim sock As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
Dim sockcon As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
Dim str As String
Dim A(1000) As Byte
Dim B(1000) As Byte


Private Sub btEcouter_Click(sender As Object, e As EventArgs) Handles btConnect.Click
If porttext.Text <> "" Or adressetext.Text <> "" Then
sock = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
sock.Connect(adressetext.Text, porttext.Text)
ChatGroup.Visible = True
btConnect.Enabled = False
Timer1.Start()
Timer1.Enabled = True
Else
MsgBox("Veuillez spécifier un numéro de port et/ou l'adresse ")
End If

End Sub

Private Sub btEnvoyer_Click(sender As Object, e As EventArgs) Handles btEnvoyer.Click

A = System.Text.Encoding.ASCII.GetBytes(msgenv.Text + "$")
messagestext.Text += vbCrLf + "Moi : " + msgenv.Text

sock.Send(A)
End Sub

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick

sock.Receive(B)
str = System.Text.Encoding.ASCII.GetString(B)
messagestext.Text += vbCrLf + "Serveur : " + str

End Sub
End Class

et merci d'avance;

1 réponse

Messages postés
14759
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 janvier 2021
151
Bonjour,

Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).

En pas à pas, tu as pu vérifier les valeurs des variables ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]{Point2}[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site