1 pièce(s) jointe(s)
Réception d'un paquet en UDP
Bonjour à chacun et chacune !
Je continue ma migration vers VB.NET 2010 Express, après de logues années en VB6.
J'ai développé et utilise une application en VB6, tournant sur un serveur dédié. Cette application répond à des commandes reçues de PC clients, en UDP. Cela fonctionne très bien. Par exemple, la commande "INTLISTEUSERS" envoie la liste des users (!). Je veux intégrer cela dans une nouvelle application client en VB.NET et me livre depuis plusieurs jours à des essais soldés par des échecs, au moyen d'exemples trouvés sur le net.
Voici mon dernier essai :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Public Class Form1
Public UDPCli As UdpClient
Public UDPSer As UdpClient
Public Start As Boolean = False
' Démarre le serveur
Private Sub ButDemarrer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButDemarrer.Click
Start = True
ButDemarrer.Enabled = False
ButArreter.Enabled = True
Dim th As New Threading.Thread(AddressOf Serveur) : th.Start()
End Sub
' Arrêt du serveur (du thread)
Private Sub ButArreter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButArreter.Click
Start = False
End Sub
' Serveur sur un nouveau Thread
Public Sub Serveur()
While Start = True
Try
UDPSer = New UdpClient(1550) ' Bind sur le port 1550
UDPSer.Client.ReceiveTimeout = 1000
Dim recu As Byte() = UDPSer.Receive(New IPEndPoint(IPAddress.Parse("127.0.0.1"), 1550)) ' Attente d'un message sur le port 1550
MsgBox(Encoding.UTF8.GetString(recu))
Catch ex As Exception
MsgBox(ex.ToString)
End Try
UDPSer.Close()
End While
Me.Invoke(Sub() ButDemarrer.Enabled = True)
Me.Invoke(Sub() ButArreter.Enabled = False)
End Sub
Private Sub ButEnvoyer_Click(sender As System.Object, e As System.EventArgs) Handles ButEnvoyer.Click
UDPCli = New UdpClient()
UDPCli.Connect(New IPEndPoint(IPAddress.Parse("91.121.xxx.xxx"), 1500)) ' IP masquée pour le forum
Dim send As Byte() = Encoding.UTF8.GetBytes("INTLISTEUSERS")
UDPCli.Send(send, send.Length)
UDPCli.Close()
End Sub
End Class |
Mon serveur reçoit en port 1500 et répond en 1550.
Lorsque je lance j'obtiens une exception :
Pièce jointe 594709
Une âme charitable pourrait-elle m'expliquer comment corriger cela, ou me donner un exemple qui fonctionne ?
Merci beaucoup !
Eric