Salut Kevin,
J'ai tout repris à plat avec donc un Objet de type TCPClient, voici mon code
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Public Class Form1
'Private socket As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
Private IPAdresse As IPAddress = System.Net.IPAddress.Parse("192.168.0.2")
Private iPEndPoint As IPEndPoint = New System.Net.IPEndPoint(IPAdresse, 1960)
Private tcpClient As System.Net.Sockets.TcpClient = New System.Net.Sockets.TcpClient(iPEndPoint)
'Private callback As AsyncCallback
'Private longueur As Integer = Socket.ReceiveBufferSize
Private Message(tcpClient.Available) AsByte
'Private BufferDonnées As System.Text.StringBuilder = New System.Text.StringBuilder("")
Private Sub ButtonClient_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonClient.Click
tcpClient.Connect(iPEndPoint)
If (tcpClient.Connected) Then
ButtonClient.Text = "Connecté"
End If
Dim LongueurDonnées AsInteger = tcpClient.ReceiveBufferSize
tcpClient.Client.Receive(Message, tcpClient.Available, SocketFlags.None)
Dim msg AsString = System.Text.Encoding.Unicode.GetString(Message)
TextBoxClient.Text = msg
tcpClient.Close()
End Sub
End Class
Cela se passe bien du côté buffer. Néanmoins lorsque je lance le client j'obtient le message suivant
Une erreur s'est produite lors de la création du formulaire. Pour plus d'informations, consultez Exception.InnerException. L'erreur est : Une seule utilisation de chaque adresse de socket (protocole/adresse réseau/port) est habituellement autorisée
Il semble que le client ne puisse pas avoir le même IPEndPoint que le serveur. Pourtant c'est la base du principe client -serveur. En effet, le serveur est en écoute sur une machine identifiée par son IP et cette écoute se fait sur un port X. Le client doit donc s'adresser à cette même adresse IP afin d'atteindre la machine qui héberge le service et sur le port X afin de solliciter ce service. Voici des années que je travaille en réseau et j'ai toujours constaté ce principe de fonctionnement en client-serveur.Du reste lorsque l'on développe en Java la conception se fait sur ces fondements.
En vb.net, Visual Studio m'insulte, si le serveur et le client ont le même IPEndPoint. Et dans le cas contraire, rien ne fonctionne, ce qui est logique.
Je ne vois pas d'autre solution que d'avoir un IPEndPoint avec les mêmes valeurs pour le serveur et le client. A moins que Microsoft a réinventé le client-serveur !!!
Très Cordialement
Philippe