Conocer cómo codificar una sala de chat sin necesidad de utilizar una base de datos puede ayudarle a crear un servidor /aplicación cliente sin tener que dedicar tiempo a diseñar una base de datos . Un programa de chat se crea mediante el uso de dos aplicaciones , el cliente y el servidor. La aplicación de servidor se encargará de todas las conexiones de los clientes para establecer la comunicación . El programa cliente se instala en cualquier ordenador querer conectar con el servidor de chatear con otros clientes . Puede crear esta aplicación utilizando Microsoft Visual Basic.NET , también conocido como VB.NET . Cosas que necesitará
Microsoft Visual Basic Express
Ver Más instrucciones
1
Abra Microsoft Visual Basic Express, haga clic en " Nuevo proyecto ... " en el panel izquierdo de la pantalla, a continuación, seleccione " Aplicación de consola. " Haga clic en " Aceptar".
2 Pulse la tecla "Ctrl " y " A ", después pulse en "Eliminar " para eliminar todo el código existente. Copia y pega el código de abajo en su " Module1.vb " para crear la aplicación de servidor :
Importaciones System.Net.Sockets
Imports System.Text Módulo
Module1
hshTbl Dim As New Hashtable
Sub Main ()
svrSckt Dim As New TcpListener ( 8888 )
TClient As TcpClient
infntCntr Dim As Integer
cntr Dim As Integer
svrSckt.Start ()
msg ( "Servidor de introducción para charlar .... " )
cntr = 0
infntCntr = 0
Para infntCntr = 1 a 2
infntCntr = 1
cntr + = 1
TClient = svrSckt.AcceptTcpClient ()
Dim btsFrom ( 10024 ) As Byte
datosCliente dévil como secuencia
NetworkStream dévil como NetworkStream = _
tClient.GetStream ()
networkStream.Read ( btsFrom , 0, CInt ( tClient.ReceiveBufferSize ))
datosCliente = System.Text.Encoding.ASCII.GetString ( btsFrom )
datosCliente = _
clientData.Substring ( 0 , clientData.IndexOf ( "$" ))
hshTbl ( datosCliente ) = TClient
difusión ( datosCliente + " se ha unido " , datosCliente , False )
msg ( datosCliente + " se ha unido a la sala de chat " )
cliente Dim As New handleClinet
client.startClient ( TClient , datosCliente , Sub
Sub MSG ( glutamato monosódico ByVal como secuencia)
msg.Trim ()
Console.WriteLine ( ">> " + msg)
< p > End Sub
emisión Sub Private (msg ByVal As String , _
usrname ByVal As String , ByVal flg As Boolean )
dicEntry Dim As
DictionaryEntry
En cada dicEntry En hshTbl
broadcastSocket As TcpClient
broadcastSocket = CType ( dicEntry.Value , TcpClient )
broadcastStream dévil como NetworkStream = _
broadcastSocket.GetStream ()
broadcastBytes Dim Como [ Byte ] ()
Si flg = TRUE entonces
broadcastBytes = Encoding.ASCII.GetBytes ( usrname + " 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
TClient Dim As
TcpClient
ClNO As String Dim
hshTbl As Hashtable
Public Sub startClient ( ByVal inClientSocket Como TcpClient , _
clnNum ByVal As String , ByVal hsTbl Como Hashtable )
Me.tClient = inClientSocket
Me.clNo = clnNum
Me.hshTbl = hsTbl
ctThread As threading.Thread = New threading.Thread ( AddressOf doChat )
ctThread.Start ()
End Sub
doChat Sub Private ()
infntCntr Dim As Integer Dim
rqstCnt As Integer Dim
btsFrom ( 10024 ) As Byte
datosCliente dévil como secuencia
btsSend As [ Byte ] ()
responseSrvr Dim As String
RCNT dévil como secuencia
rqstCnt = 0
Para infntCntr = 1 a 2
infntCntr = 1
Prueba
rqstCnt = rqstCnt + 1
NetworkStream dévil como NetworkStream = _
tClient.GetStream ()
networkStream.Read ( btsFrom , 0, CInt ( tClient.ReceiveBufferSize ))
datosCliente = System.Text.Encoding.ASCII.GetString ( btsFrom )
datosCliente = _
clientData.Substring ( 0 , clientData.IndexOf ( "$" ))
msg ( " Desde el cliente :" + ClNO + ": " + datosCliente )
RCNT = Convert.ToString ( rqstCnt )
emisión
( datosCliente , ClNO , verdadero)
Catch ex As Exception
MsgBox ( ex.ToString )
End Try
Siguiente
End Sub
End Class
End Module
3
Abra una nueva instancia de Microsoft Visual Basic Express , haga clic en "Nuevo proyecto ... " en el panel izquierdo de la pantalla, a continuación, seleccione " Aplicación de Windows Forms ". Haga clic en " Aceptar". Haga clic en el panel " Herramientas " , haga doble clic en " TextBox " para añadir un nuevo cuadro de texto . Añadir otros dos cuadros de texto utilizando el mismo método. Agregue dos botones de en el menú " Herramientas " .
4
doble clic en el formulario, pulse la tecla "Ctrl " y " a ", a continuación, pulse "Eliminar " para eliminar todo el código existente. Copia y pega el código de abajo en su módulo " Form1.vb " para crear el programa cliente :
Importaciones System.Net.Sockets
Imports System.Text
Public Class Form1
Dim clntSckt As New System.Net.Sockets.TcpClient ()
srvrStrm dévil como NetworkStream
rddata dévil como secuencia
infCntr As Integer
Private Sub Button1_Click ( remitente de ByVal como System.Object , _
ByVal e como System.EventArgs ) Handles Button1.Click
streamOut As Byte () = _
System.Text . Encoding.ASCII.GetBytes ( TextBox2.Text + " $" )
srvrStrm.Write ( streamOut , 0, streamOut.Length )
srvrStrm.Flush ()
End Sub
msj Sub Private ()
Si Me.InvokeRequired Entonces
Me.Invoke (New MethodInvoker ( AddressOf msg) )
demás < br >
TextBox1.Text = TextBox1.Text + Environment.NewLine + ">> " + rddata
End If End Sub
Private Sub Button2_Click ( remitente de ByVal como System.Object , _
ByVal e como System.EventArgs ) Handles Button2.Click
rddata = " Conectados a charlar servidor ... "
msg ( )
clntSckt.Connect ( "127.0.0.1 " , 8888 )
srvrStrm = clntSckt.GetStream ()
streamOut As Byte () = _
< p> System.Text.Encoding.ASCII.GetBytes ( TextBox3.Text + " $" )
srvrStrm.Write ( streamOut , 0, streamOut.Length )
srvrStrm.Flush ()
ctThread As threading.Thread = New threading.Thread ( AddressOf getMessage )
ctThread.Start ()
End Sub Private Sub
getMessage ()
Para infCntr = 1 a 2
infCntr = 1
srvrStrm = clntSckt.GetStream ()
buffSize Dim As Integer
Instream Dim ( 10024 ) As Byte
buffSize = clntSckt.ReceiveBufferSize
srvrStrm.Read ( dentro de la corriente , 0, buffSize )
returndata As String = _
< p> System.Text.Encoding.ASCII.GetString ( dentro de la corriente )
rddata = "" + returndata
msg ()
Siguiente
End Sub
End Class
5
Ejecute el programa de servidor de primera con la tecla " F5 ". Inicie el programa cliente con la tecla " F5 ". Escriba su nombre en " TextBox3 ", luego haga clic en " Button2 "para establecer una conexión con el programa servidor.
6
Escriba un mensaje en" TextBox2 , "y luego haga clic en" Button1 " para enviar el mensaje . el mensaje se mostrará en la ventana de salida del servidor.