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 :
Mon serveur reçoit en port 1500 et répond en 1550.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Lorsque je lance j'obtiens une exception :
Une âme charitable pourrait-elle m'expliquer comment corriger cela, ou me donner un exemple qui fonctionne ?
Merci beaucoup !
Eric
Partager