Tecnología

Inicio

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.