Ben je n'ai pas encore réglé le problème en fait. Bon, voici mon module:
Imports System.Net.Sockets
Imports
System.Text Imports
System.Windows.Forms Module
Module1 Dim clientsList As New Hashtable Sub Main() Dim serverSocket As New TcpListener(8888) Dim clientSocket As TcpClient Dim infiniteCounter As Integer
Dim counter As Integer serverSocket.Start()
msg(
"Chat Server Started ...." )counter = 0
infiniteCounter = 0
For infiniteCounter = 1 To 2infiniteCounter = 1
counter += 1
clientSocket = serverSocket.AcceptTcpClient()
Dim bytesFrom(10024) As Byte
Dim dataFromClient As String
Dim networkStream As NetworkStream = _clientSocket.GetStream()
networkStream.Read(bytesFrom, 0,
CInt (clientSocket.ReceiveBufferSize))dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom)
dataFromClient = _
dataFromClient.Substring(0, dataFromClient.IndexOf(
"$" ))clientsList(dataFromClient) = clientSocket
broadcast(dataFromClient +
" Joined " , dataFromClient, False )msg(dataFromClient +
" Joined chat room " ) Dim client As New handleClinetclient.startClient(clientSocket, dataFromClient, clientsList)
Next clientSocket.Close()
serverSocket.Stop()
msg(
"exit" )Console.ReadLine()
End Sub
Public Sub msg( ByVal mesg As String )mesg.Trim()
Console.WriteLine(
" >> " + mesg) End Sub
Private Sub broadcast( ByVal msg As String , _ ByVal uName As String , ByVal flag As Boolean ) Dim Item As DictionaryEntry For Each Item In clientsList Dim broadcastSocket As TcpClientbroadcastSocket =
CType (Item.Value, TcpClient) Dim broadcastStream As NetworkStream = _broadcastSocket.GetStream()
Dim broadcastBytes As [Byte]() If flag = True Then broadcastBytes = Encoding.ASCII.GetBytes(uName +
" says : " + msg) Else broadcastBytes = Encoding.ASCII.GetBytes(msg)
End If broadcastStream.Write(broadcastBytes, 0, broadcastBytes.Length)
broadcastStream.Flush()
Next
End Sub
Public Class handleClinet Dim clientSocket As TcpClient Dim clNo As String
Dim clientsList As Hashtable Public Sub startClient( ByVal inClientSocket As TcpClient, _ ByVal clineNo As String , ByVal cList As Hashtable) Me .clientSocket = inClientSocket Me .clNo = clineNo Me .clientsList = cList Dim ctThread As Threading.Thread = New Threading.Thread( AddressOf doChat)ctThread.Start()
End Sub
Private Sub doChat() Dim infiniteCounter As Integer
Dim requestCount As Integer
Dim bytesFrom(10024) As Byte
Dim dataFromClient As String
Dim sendBytes As [Byte]() Dim serverResponse As String
Dim rCount As String requestCount = 0
For infiniteCounter = 1 To 2infiniteCounter = 1
Try requestCount = requestCount + 1
Dim networkStream As NetworkStream = _clientSocket.GetStream()
networkStream.Read(bytesFrom, 0,
CInt (clientSocket.ReceiveBufferSize))dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom)
dataFromClient =
dataFromClient.Substring(0, dataFromClient.IndexOf(
"$" ))msg(
"From client - " + clNo + " : " + dataFromClient)rCount = Convert.ToString(requestCount)
broadcast(dataFromClient, clNo,
True ) Catch ex As ExceptionMsgBox(ex.ToString)
End Try
Next
End Sub
End ClassEnd
Module
Ce que j'essaye de faire? Je voudrais qu'au lieu de la console, tout ceci se fasse dans une form (avec une listbox remplaçant la console), un déclenchement du start par un bouton (idem pour la cloture). Et je n'y arrive pas...
Si quelqu'un peut me souffler une idée svp?
En tout cas, merci de ton aide megafan :)
Merci
Flatron123