-
Cómo hacer una sala de chat en Visual Basic Express
-
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, así como la aplicación cliente se conecta a los usuarios de la sala de servidores para enviar mensajes.
Instrucciones
1 Iniciar Microsoft Visual Basic Express y haga clic en "Nuevo proyecto". En el panel izquierdo de la pantalla, selecciona "Aplicación de consola." Haga clic en Aceptar."
2 Pulse la tecla "Ctrl" + "A", y luego presione "Eliminar". Copia y pega el siguiente código en su "Module1.vb" para crear el programa de servidor:
importaciones System.Net.Sockets
Las importaciones System.Text
Module Module1
Dim clientsList As New Hashtable
Sub principal()
ServerSocket Dim como nuevo TcpListener (8888)
Dim ClientSocket Como TcpClient
Dim infiniteCounter como número entero
contador de atenuación como número entero
serverSocket.Start ()
msg ( "servidor de chat Comienza ....")
contador = 0
infiniteCounter = 0
Para infiniteCounter = 1 a 2
infiniteCounter = 1
contador + 1 =
ClientSocket = serverSocket.AcceptTcpClient ()
bytesFrom dim (10024) As Byte
Dim como secuencia dataFromClient
Dim NetworkStream 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
emisión (dataFromClient + "Usuario", dataFromClient, False)
msg (dataFromClient + "Usuario sala de chat")
Como cliente tenue Nueva handleClinet
client.startClient (ClientSocket, dataFromClient, clientsList)
Siguiente
clientSocket.close ()
serverSocket.Stop ()
msg ( "salida")
Console.ReadLine ()
End Sub
Sub msg (ByVal mesg como secuencia)
mesg.Trim ()
Console.WriteLine ( ">>" + mesg)
End Sub
Private Sub emisión (ByVal As String msg, _
ByVal como secuencia UName, bandera ByVal As Boolean)
Artículo Dim Como DictionaryEntry
Para cada elemento de clientsList
Dim broadcastSocket Como TcpClient
broadcastSocket = CType (Item.Value, TcpClient)
Dim broadcastStream Como NetworkStream = _
broadcastSocket.GetStream ()
broadcastBytes dévil como [Byte] ()
Si la bandera = entonces verdad
broadcastBytes = Encoding.ASCII.GetBytes (uname + "dice:" + msg)
Más
broadcastBytes = Encoding.ASCII.GetBytes (msg)
Terminara si
broadcastStream.Write (broadcastBytes, 0, broadcastBytes.Length)
broadcastStream.Flush ()
Siguiente
End Sub
Clase pública handleClinet
Dim ClientSocket Como TcpClient
Dim como secuencia CLNO
clientsList dévil como Hashtable
Public Sub startClient (ByVal inClientSocket Como TcpClient, _
ByVal clineNo como secuencia, de ByVal clist Como Hashtable)
Me.clientSocket = inClientSocket
Me.clNo = clineNo
Me.clientsList = clist
Dim ctThread Como threading.Thread = Nueva threading.Thread (AddressOf doChat)
ctThread.Start ()
End Sub
Private Sub doChat ()
Dim infiniteCounter como número entero
Dim RequestCount como número entero
bytesFrom dim (10024) As Byte
Dim como secuencia dataFromClient
Dim sendBytes Como [Byte] ()
serverResponse Dim como secuencia
Dim como secuencia RCount
RequestCount = 0
Para infiniteCounter = 1 a 2
infiniteCounter = 1
Tratar
RequestCount = 1 + RequestCount
Dim NetworkStream 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, True)
Catch ex As Exception
MsgBox (ex.ToString)
Try End
Siguiente
End Sub
End Class
Módulo fin
3 Iniciar 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 de "caja de herramientas", y luego "Cuadro de texto", haga doble clic para añadir un nuevo cuadro de texto. Añadir dos más cuadros de texto. Agregue dos botones en el menú "Herramientas".
4 Haga doble clic en el formulario, y luego la tecla "Ctrl" + "A" Pulse el botón "Borrar". Copia y pega el código siguiente en el módulo "Form1.vb" para crear el programa de cliente:
importaciones System.Net.Sockets
Las importaciones System.Text
Public Class Form1
Dim clientSocket As New System.Net.Sockets.TcpClient()
Dim serverStream Como NetworkStream
Dim como secuencia ReadData
Dim infiniteCounter como número entero
Private Sub Button1_Click (remitente de ByVal como System.Object, _
ByVal e As System.EventArgs) Maneja Button1.Click
Dim outStream As Byte () = _
System.Text.Encoding.ASCII.GetBytes (TextBox2.Text + "$")
serverStream.Write (outStream, 0, outStream.Length)
serverStream.Flush ()
End Sub
Private Sub msg ()
Si Me.InvokeRequired Entonces
Me.Invoke (Nueva MethodInvoker (AddressOf msg))
Más
TextBox1.Text = TextBox1.Text + + Environment.NewLine ">>" + ReadData
Terminara si
End Sub
Private Sub Button2_Click (remitente de ByVal como System.Object, _
ByVal e As System.EventArgs) Maneja Button2.Click
ReadData = "Personajes 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 ()
Dim outStream As Byte () = _
System.Text.Encoding.ASCII.GetBytes (TextBox3.Text + "$")
serverStream.Write (outStream, 0, outStream.Length)
serverStream.Flush ()
Dim ctThread Como threading.Thread = Nueva threading.Thread (AddressOf getMessage)
ctThread.Start ()
End Sub
Private Sub getMessage ()
Para infiniteCounter = 1 a 2
infiniteCounter = 1
serverStream = clientSocket.GetStream ()
Dim buffSize como número entero
Instream dim (10024) As Byte
buffSize = clientSocket.ReceiveBufferSize
serverStream.Read (in-stream, 0, buffSize)
Dim returndata como secuencia = _
System.Text.Encoding.ASCII.GetString (in-stream)
ReadData = "" + returndata
msg ()
Siguiente
End Sub
End Class
5 Ejecutar el programa de servidor en primer lugar con la tecla "F5", y luego ejecutar el programa cliente. Escriba su nombre en "TextBox3" y haga clic en "Button2" para conectarse al servidor. Escriba un mensaje en "TextBox2," y luego haga clic en "Button1" para enviar un mensaje.