Bonjour, j’ai besoin d’aide pour un problème dont je ne peux imaginer l’origine:
J’écris une application Web qui va utiliser les sockets pour communiquer. J’ai un serveur qui fonctionne, le problème se pose coté client. Je me base sur un code de chat que j’adapte. La connexion au serveur se passe sans souci, l’envoi d’un pseudo passe correctement mais dès qu’il s’agit d’envoyer un message, alors que j’utilise le même sub que pour le pseudo, j’ai l’erreur suivante lors de test en local (127.0.0.1) avec IIS Express:
System.NullReferenceException : 'La référence d’objet n’est pas définie à une instance d’un objet.' MonSocketClient a été Nothing.
D’où vient le problème ?
Imports System.Net
Imports System.Net.Sockets
Imports System.Threading
Public Class _Default
Inherits Page
'Public MonSocketClient As Socket
Public MonThread As Thread
Public Mess As Byte()
Public Envoi As Integer
Dim MonEP As IPEndPoint
Public MonSocketClient As Socket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) 'Initialise le socket
Public Sub BT_CONNEXION_Click(sender As Object, e As EventArgs) Handles BT_CONNEXION.Click
MsgBox("ok")
Try
MonEP = New IPEndPoint(IPAddress.Parse("127.0.0.1"), 45435) 'Entre les informations de connexion
MonSocketClient.Connect(MonEP) 'Tente de se connecter
TraitementConnexion()
Catch ex As Exception
MsgBox("Erreur lors de la tentative de connexion au serveur. Vérifiez l'ip et le port du serveur." & ex.ToString, 2)
End Try
End Sub
Sub TraitementConnexion()
MsgBox("Connexion au serveur réussie !")
'Change les statuts des contrôles
BT_DECONNEXION.Visible = True
TXT_MESSAGE.Visible = True
BT_CONNEXION.Visible = False
BT_DECONNEXION.Visible = True
BT_Envoi.Visible = True
'Envoi du pseudo au serveur
envoi_Message("Alain")
MonThread = New Thread(AddressOf ThreadLecture)
MonThread.Start()
End Sub
Sub envoi_Message(TexteAEnvoyer)
Mess = Encoding.UTF8.GetBytes(TexteAEnvoyer)
Envoi = MonSocketClient.Send(Mess) 'Envoi du message au serveur
End Sub
Sub BT_Envoi_Click(sender As Object, e As EventArgs) Handles BT_Envoi.Click
MsgBox(TXT_MESSAGE.Text)
envoi_Message(TXT_MESSAGE.Text)
TXT_MESSAGE.Text = "" 'Efface la ligne
End Sub
Public Sub Deconnexion()
Me.TXT_MESSAGE.Enabled = False
Me.BT_CONNEXION.Enabled = True
Me.BT_DECONNEXION.Enabled = False
Me.BT_Envoi.Enabled = False
End Sub
Sub ThreadLecture()
While (MonSocketClient.Connected) 'Tant qu'on est connecté au serveur
Dim Bytes(255) As Byte
Dim Recu As Integer
Try
Recu = MonSocketClient.Receive(Bytes)
Catch ex As Exception 'Erreur si fermeture du socket pendant la réception
MsgBox("Connexion perdue, arrêt de la réception des données ...", 1)
'If Not Me.IsDisposed Then 'Si ce n'est pas le client qui est en cours de fermeture
'Me.Invoke(New dDeconnexion(AddressOf Deconnexion))
'End If
End Try
Dim Message As String
Message = System.Text.Encoding.UTF8.GetString(Bytes)
Message = Message.Substring(0, Recu)
'Dim Temp As String = TXT_MESSAGES.Text
'Message = Temp + Message
TXT_MESSAGES.Text = Message
'TXT_MESSAGES.Items.Add(Message)
MsgBox(Message)
End While
End Sub
End Class
Merci pour votre aide
+0
-0