1
Inicie Microsoft Visual Basic Express, y luego haga clic en " Nuevo proyecto ". En el panel izquierdo de la pantalla , seleccione " Aplicación de consola. " Haga clic en " Aceptar".
2 Pulse la tecla "Ctrl " + " A ", y luego presione " Eliminar". Copie y pegue el siguiente código en tu " Module1.vb " para crear el programa de servidor :
Importaciones System.Net.Sockets
Imports System.Text Módulo
Module1
clientsList Dim As New Hashtable
Sub Main ()
ServerSocket Dim As New TcpListener ( 8888 )
ClientSocket As TcpClient
infiniteCounter Dim As Integer
counter As Integer
serverSocket.Start ()
msg ( " chat Server Started .... ")
counter
= 0
infiniteCounter = 0
Para infiniteCounter = 1 a 2
infiniteCounter = 1
contador + = 1
ClientSocket = serverSocket.AcceptTcpClient ()
Dim bytesFrom ( 10024 ) As Byte
dataFromClient dévil como secuencia
NetworkStream dévil como 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
difusión ( dataFromClient + " Registrado " , dataFromClient , Falso)
msg ( dataFromClient + " Registrado sala de chat " )
cliente Dim As New handleClinet
client.startClient ( ClientSocket , dataFromClient , Sub
Sub msg ( mesg ByVal como secuencia)
mesg.Trim ()
Console.WriteLine ( ">> " + mesg )
< p > End Sub
emisión Sub Private (msg ByVal As String , _
uName ByVal como secuencia , bandera ByVal As Boolean )
Dim Elemento como
DictionaryEntry
Para cada elemento de clientsList
broadcastSocket As TcpClient
broadcastSocket = CType ( Item.Value , TcpClient )
broadcastStream dévil como NetworkStream = _
broadcastSocket.GetStream ()
broadcastBytes Dim As [ Byte ] ()
Si flag = true entonces
broadcastBytes = Encoding.ASCII.GetBytes ( uName + " dice: " + msg)
demás
broadcastBytes = Encoding.ASCII.GetBytes ( msg)
End If
broadcastStream.Write ( broadcastBytes , 0, broadcastBytes . Longitud )
broadcastStream.Flush ()
Siguiente
End Sub
Public Class handleClinet
ClientSocket Dim As
TcpClient
ClNO As String Dim
clientsList As Hashtable
Public Sub startClient ( ByVal inClientSocket Como TcpClient , _
clineNo ByVal As String , ByVal CList Como Hashtable )
Me.clientSocket = inClientSocket
Me.clNo = clineNo
Me.clientsList = CList
ctThread As threading.Thread = New threading.Thread ( AddressOf doChat )
ctThread.Start ()
End Sub
doChat Sub Private ()
infiniteCounter Dim As Integer Dim
RequestCount As Integer Dim
bytesFrom ( 10024 ) As Byte
dataFromClient dévil como secuencia
sendBytes Dim Como [ Byte ] ()
serverResponse Dim As String
RCOUNT dévil como secuencia
RequestCount = 0
Para infiniteCounter = 1 a 2
infiniteCounter = 1
Prueba
RequestCount = RequestCount + 1
NetworkStream dévil como NetworkStream = _
clientSocket.GetStream ()
networkStream.Read ( bytesFrom , 0, CInt ( clientSocket.ReceiveBufferSize ))
dataFromClient = System.Text.Encoding.ASCII.GetString ( bytesFrom )
dataFromClient = _
dataFromClient.Substring ( 0 , dataFromClient.IndexOf ( "$" ))
msg ( " Desde el cliente - " ClNO + + ": " + dataFromClient )
RCOUNT = Convert.ToString ( RequestCount )
emisión
( dataFromClient , ClNO , verdadero)
Catch ex As Exception
MsgBox ( ex.ToString )
End Try
Siguiente
End Sub
End Class
End Module
3
Inicie Microsoft Visual Basic Express y haga clic en "Nuevo proyecto ". En el panel izquierdo de la pantalla , seleccione " Aplicación de Windows Forms ". Haga clic en" Aceptar ". Haga clic en el " panel " , y luego haga doble clic en " caja de herramientas de cuadro de texto "para añadir un nuevo cuadro de texto . Añadir otros dos cuadros de texto. Agregue dos botones en el menú" Herramientas " .
Página 4
doble clic en el formulario y, a continuación, pulse la tecla "Ctrl " + "A" Press Copia y pega el siguiente código en el módulo " Form1.vb " para crear el programa cliente " Eliminar". :
Importaciones System.Net.Sockets
Imports System.Text
Public Class Form1
ClientSocket Dim As New System.Net.Sockets.TcpClient ()
serverStream dévil como NetworkStream
readData dévil como secuencia
infiniteCounter Dim As Integer
Private Sub Button1_Click ( remitente de ByVal como System.Object , _
ByVal e como System.EventArgs ) Handles Button1.Click
outStream As Byte () = _
System.Text.Encoding.ASCII.GetBytes ( TextBox2.Text + " $ " )
serverStream.Write ( outStream , 0, outStream.Length )
serverStream.Flush ()
End Sub
msj Private Sub ( )
Si Me.InvokeRequired Entonces
Me.Invoke (New MethodInvoker ( AddressOf msg) )
demás
TextBox1.Text = TextBox1.Text + Environment.NewLine + ">> " + readData
End If End Sub
Private Sub Button2_Click ( remitente de ByVal como System.Object , _
< p> ByVal e como System.EventArgs ) Handles Button2.Click
readData = " Conectados al servidor de chat ... "
msg ( )
clientSocket.Connect ( " 127.0.0.1 " , 8888 ) Label1.Text =
" Programa de socket de cliente - servidor conectado ... "
serverStream = clientSocket.GetStream ()
outStream Dim As Byte () = _
System.Text.Encoding.ASCII.GetBytes
( TextBox3.Text + " $" )
serverStream.Write ( outStream , 0, outStream.Length )
serverStream.Flush ()
ctThread Dim As threading.Thread = New threading.Thread ( AddressOf getMessage )
ctThread.Start ()
End Sub
Private Sub getMessage ()
Para infiniteCounter = 1 a 2
infiniteCounter = 1
serverStream = clientSocket.GetStream ()
buffSize As Integer
Instream Dim ( 10024 ) As Byte
buffSize = clientSocket.ReceiveBufferSize
serverStream.Read ( dentro de la corriente , 0, buffSize )
returndata As String = _
System.Text.Encoding.ASCII.GetString ( dentro de la corriente )
readData = " " + returndata
msg ( )
< p > Siguiente
End Sub End Class
5
ejecute el programa de servidor de primera con la tecla " F5 " , ya continuación, ejecute el programa cliente. Escriba su nombre en " TextBox3 " y haga clic en " Button2 " para conectar con el servidor. Escriba un mensaje en " TextBox2 , " y luego haga clic en " Button1 " para enviar un mensaje.