faresallayl
Messages postés3Date d'inscriptionmercredi 29 juin 2011StatutMembreDernière intervention17 juin 2012
-
16 juin 2012 à 23:15
faresallayl
Messages postés3Date d'inscriptionmercredi 29 juin 2011StatutMembreDernière intervention17 juin 2012
-
17 juin 2012 à 11:07
Bonjour, j'ai un problème dans l'authentification, lorsque je clique sur valider le serveur indique que le client a quitté.
code client
Imports System.IO, System.Net, System.Net.Sockets
Public Class FrmAuth
Dim Client As TcpClient
Dim sWriter As StreamWriter
Dim pseudonyme As String = ""
Private Sub BtConnecter_Click(sender As Object, e As EventArgs) Handles BtConnecter.Click
Client = New TcpClient(TextAdr.Text, CInt(TextPort.Text))
Client.GetStream.BeginRead(New Byte() {0}, 0, 0, New AsyncCallback(AddressOf Read), Nothing)
BtAnnuler.Enabled = True
BtConnecter.Enabled = False
GroupAuth.Enabled = True
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles BtAnnuler.Click
Client.Close()
Client = Nothing
BtConnecter.Enabled = True
End Sub
Sub Read(ByVal ar As IAsyncResult)
Try
MsgBox(New StreamReader(Client.GetStream).ReadLine)
Client.GetStream.BeginRead(New Byte() {0}, 0, 0, AddressOf Read, Nothing)
Catch
MsgBox("Vous êtes déconnecté du serveur")
Exit Sub
End Try
End Sub
Private Sub Send(ByVal Str As String)
Try
sWriter = New StreamWriter(Client.GetStream)
sWriter.WriteLine(Str)
sWriter.Flush()
Catch
MsgBox("Erreur d'envoi")
End Try
End Sub
Private Sub BtValider_Click(sender As Object, e As EventArgs) Handles BtValider.Click
Send("$" & TextLogin.Text & "**" & TextPasswd.Text)
TextPasswd.Clear()
GroupChat.Enabled = True
pseudonyme = TextLogin.Text
End Sub
Private Sub TextEnv_KeyDown(sender As Object, e As KeyEventArgs) Handles TextEnv.KeyDown
If e.KeyCode = Keys.Enter Then
e.SuppressKeyPress = True
Send(pseudonyme & " Dit: " & TextEnv.Text)
TextEnv.Clear()
End If
End Sub
End Class
code serveur
Imports System.IO, System.Net, System.Net.Sockets
Public Class FrmServ
Dim Listener As TcpListener
Dim Client As TcpClient
Dim ClientList As New List(Of ChatClient)
Dim sReader As StreamReader
Dim cClient As ChatClient
Sub xLoad() Handles Me.Load
Listener = New TcpListener(IPAddress.Any, 9999)
Listener.Start()
xUpdate("Serveur Démarré", False)
Listener.BeginAcceptTcpClient(New AsyncCallback(AddressOf AcceptClient), Listener)
End Sub
Sub AcceptClient(ByVal ar As IAsyncResult)
cClient = New ChatClient(Listener.EndAcceptTcpClient(ar))
AddHandler (cClient.MessageRecieved), AddressOf MessageRecieved
AddHandler (cClient.ClientExited), AddressOf ClientExited
ClientList.Add(cClient)
xUpdate("Nouveau Client rejoint", True)
Listener.BeginAcceptTcpClient(New AsyncCallback(AddressOf AcceptClient), Listener)
End Sub
Sub MessageRecieved(ByVal Str As String)
If (Str(0).CompareTo("$")) Then
If (lectureFichier("C:\Users\MOHAMED\Documents\users.txt", Str) = False) Then
ecritureFichier("C:\Users\MOHAMED\Documents\users.txt", Str)
End If
xUpdate(Str, True)
else
xUpdate(Str, True)
End If
End Sub
Sub ClientExited(ByVal Client As ChatClient)
ClientList.Remove(Client)
xUpdate("Client Sorti", True)
End Sub
Delegate Sub _xUpdate(ByVal Str As String, ByVal Relay As Boolean)
Sub xUpdate(ByVal Str As String, ByVal Relay As Boolean)
On Error Resume Next
If InvokeRequired Then
Invoke(New _xUpdate(AddressOf xUpdate), Str, Relay)
Else
TextMsg.AppendText(Str & vbNewLine)
If Relay Then Send(Str)
End If
End Sub
Private Sub TextEnv_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextEnv.KeyDown
If e.KeyCode = Keys.Enter Then
e.SuppressKeyPress = True
xUpdate("Serveur Dit: " & TextEnv.Text, True)
TextEnv.Clear()
End If
End Sub
Sub Send(ByVal Str As String)
For i As Integer = 0 To ClientList.Count - 1
Try
ClientList(i).Send(Str)
Catch
ClientList.RemoveAt(i)
End Try
Next
End Sub
Function lectureFichier(ByVal fichier As String, ByVal chaine As String) As Boolean
Try
Dim monStreamReader As New StreamReader(fichier)
Dim ligne As String
Do
ligne = monStreamReader.ReadLine
If (chaine.CompareTo(ligne)) Then
monStreamReader.Close()
Return True
End If
Loop Until ligne Is Nothing
monStreamReader.Close()
Catch ex As Exception
MsgBox("Une erreur est survenue au cours de l'accès en lecture du fichier de configuration du logiciel." & vbCrLf & vbCrLf & "Veuillez vérifier l'emplacement : " & fichier, MsgBoxStyle.Critical, "Errueur lors e l'ouverture du fichier conf...")
End Try
Return False
End Function
Sub ecritureFichier(ByVal fichier As String, ByVal chaine As String)
Try
Dim monStreamWriter As StreamWriter = New StreamWriter(fichier)
monStreamWriter.WriteLine(chaine)
monStreamWriter.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class
Imports System.Net.Sockets, System.IO
Public Class ChatClient
Public Event MessageRecieved(ByVal Str As String)
Public Event ClientExited(ByVal Client As ChatClient)
Private sWriter As StreamWriter
Private Client As TcpClient
Sub New(ByVal xclient As TcpClient)
Client = xclient
Client.GetStream.BeginRead(New Byte() {0}, 0, 0, AddressOf Read, Nothing)
End Sub
Private Sub Read()
Try
RaiseEvent MessageRecieved(New StreamReader(Client.GetStream).ReadLine)
Client.GetStream.BeginRead(New Byte() {0}, 0, 0, New AsyncCallback(AddressOf Read), Nothing)
Catch ex As Exception
RaiseEvent ClientExited(Me)
End Try
End Sub
Public Sub Send(ByVal Message As String)
sWriter = New StreamWriter(Client.GetStream)
sWriter.WriteLine(Message)
sWriter.Flush()
End Sub
End Class
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 17 juin 2012 à 01:38
Salut,
C'est très aimable à toi de nous poster ton paquet de code en nous précisant qu'il y a une erreur mais pourrais-tu développer un peu plus ? Par exemple nous dire précisément quelle ligne provoque l'erreur en faisant un débogage pas à pas ou en mettant des points d'arrêt. De plus pourrais tu détailler précisément le message d'erreur que tu reçois en faisant un copié-collé.
Tu sais moi aussi j'ai des problèmes avec mes chats
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.