Bonjours ! !
Je ne sais pas si je doit être content de vous revoir...
Après voir résolu mon problème de la dernière fois j'avais continuer, j'avais établis un envoi/réception de texte par le socket, et abracadabra ! 30min après sa ne marche plus...je ne crois pas avoir toucher quelque chose, alors je vous demande de vérifier mon code, peut-être vous verrez l'erreur que je n’ai pas vu...
Je demande connexion au serveur a partir du client
Le serveur en écoute accepte la connexion
Le client converti une phrase en Bytes et j’envoie
Le serveur reçoit et retranscrit en String et l'affiche
Je vous donne le code et après je vous explique ce que j'ai tester
Parti Client :
Parti serveur:
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 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim ipAddr As System.Net.IPAddress ipAddr = IPAddress.Parse("127.0.0.1") SocketClient = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) SocketClient.BeginConnect(New IPEndPoint(ipAddr, 80), AddressOf connexionConnectCallback, SocketClient) End Sub Private Sub connexionConnectCallback(ByVal asyncResult As IAsyncResult) Dim SocketConnect As Boolean = False Dim Width As String Dim Height As String Try SocketClient.EndConnect(asyncResult) Width = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width.ToString() Height = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height.ToString() Dim msgwidth As Byte() = Encoding.UTF8.GetBytes(Width & "/") Dim envoiwidth As Integer = SocketClient.Send(msgwidth, 0, msgwidth.Length, SocketFlags.None) Dim msgheight As Byte() = Encoding.UTF8.GetBytes(Height & "/") Dim envoiheight As Integer = SocketClient.Send(msgheight, 0, msgheight.Length, SocketFlags.None) Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub
Donc...Voici le code, donc j'ai tester ( a l'aide de msgbox juste après certaines opération )
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 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim ipAddr As System.Net.IPAddress SocketServer = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) ipAddr = IPAddress.Parse("127.0.0.1") SocketServer.Bind(New IPEndPoint(ipAddr, 80)) SocketServer.Listen(5) Me.SocketServer.BeginAccept(AddressOf connexionCallback, Me.SocketServer) End Sub Private Sub connexionCallback(ByVal asyncResult As IAsyncResult) Dim SocketConnected As Boolean = Me.SocketServer.Connected Try Dim textlabel As String Dim bytes(255) As Byte SocketServer = SocketServer.EndAccept(asyncResult) SocketServer.Receive(bytes, 0, SocketServer.Available, SocketFlags.None) Dim DonneeRecu = Encoding.UTF8.GetString(bytes) Msgbox(DonneeRecu, 0, "test") Dim Labelmodif As Label Labelmodif = Label1 textlabel = "Le client est connecté" majlabel(Labelmodif, textlabel) Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub
Coté client :
- Après définition variable : Ok ( Width : XXX, Height : XXX )
- Après cryptage en bytes : "L'argument 'Prompt' ne peut pas être convertie en type 'String'."
Donc normalement coté client tous ce passe comme il faut...Mise a part la lecture du cryptage mais sa me parait normal...
Coté serveur :
- Après réception des bytes : Le même message qu'avant "L'argument 'Prompt' ne peut....." Encore normal
- J'ai enregistrer la fonction receive dans une variable ( Elle renvoie le nombre d'octets reçu normalement )
Je test avec msgbox: 0
Code : Sélectionner tout - Visualiser dans une fenêtre à part Dim test As Integer = SocketServer.Receive(bytes, 0, SocketServer.Available, SocketFlags.None)
- Après retranscription/décodage : Vide :s
Donc l'erreur se démontre que du coté serveur mais je ne sais pas si c'est a la réception ou a l'envoi qu'est le problème..
Merci d'avance du temps que vous m'accordé
Je suis un peu perdu...
Partager