Tener el conocimiento de cómo crear una sala de chat utilizando Microsoft Visual Basic Express le puede ahorrar tiempo cuando se necesita para crear una aplicación de chat. Visual Basic Express está disponible de forma gratuita a cualquier persona interesada en la creación de aplicaciones utilizando VB.NET . Una sala de chat consiste en dos aplicaciones , el servidor y el cliente . El servidor se encarga de todas las conexiones de cliente , y la aplicación cliente conecta a los usuarios a la sala de servidor para enviar mensajes . Instrucciones
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 " . < br > 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 , _ < br >
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 ) < br >
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.