-
Cómo código de software de chat sin utilizar una base de datos
-
Conocer cómo codificar una sala de chat sin necesidad de utilizar una base de datos puede ayudar a crear una aplicación de servidor / cliente sin tener que gastar tiempo el diseño de 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 cliente para establecer la comunicación. El programa de cliente se instala en cualquier ordenador querer conectar con el servidor para chatear con otros clientes. Puede crear esta aplicación utilizando Microsoft Visual Basic.NET, también conocido como VB.NET.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", a continuación, pulse "Borrar" para eliminar todo el código existente. Copia y pega el siguiente código en su "Module1.vb" para crear la aplicación de servidor:
importaciones System.Net.Sockets
Las importaciones System.Text
Module Module1
Dim hshTbl As New Hashtable
Sub principal()
Dim svrSckt Como Nueva TcpListener (8888)
Dim tClient Como TcpClient
Dim infntCntr como número entero
CNTR As Integer Dim
svrSckt.Start ()
msg ( "Servidor de iniciación para charlar ....")
cntr = 0
infntCntr = 0
Para infntCntr = 1 a 2
infntCntr = 1
CNTR + = 1
tClient = svrSckt.AcceptTcpClient ()
Dim btsFrom (10024) As Byte
Dim como secuencia ClientData
Dim NetworkStream Como NetworkStream = _
tClient.GetStream ()
networkStream.Read (btsFrom, 0, CInt (tClient.ReceiveBufferSize))
ClientData = System.Text.Encoding.ASCII.GetString (btsFrom)
ClientData = _
clientData.Substring (0, clientData.IndexOf ( "$"))
hshTbl (ClientData) = tClient
emisión (ClientData + "se ha unido", ClientData, False)
msg (ClientData + "se ha unido a la sala de chat")
Como cliente tenue Nueva handleClinet
client.startClient (tClient, ClientData, hshTbl)
Siguiente
tClient.Close ()
svrSckt.Stop ()
msg ( "Salir")
Console.ReadLine ()
End Sub
Sub MSG (glutamato monosódico ByVal como secuencia)
msg.Trim ()
Console.WriteLine ( ">>" + msg)
End Sub
Private Sub emisión (ByVal As String msg, _
ByVal usrname como secuencia, de ByVal As Boolean FLG)
Dim dicEntry Como DictionaryEntry
Para cada dicEntry En hshTbl
Dim broadcastSocket Como TcpClient
broadcastSocket = CType (dicEntry.Value, TcpClient)
Dim broadcastStream Como NetworkStream = _
broadcastSocket.GetStream ()
broadcastBytes dévil como [Byte] ()
Si flg = entonces verdad
broadcastBytes = Encoding.ASCII.GetBytes (usrname + "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 tClient Como TcpClient
Dim como secuencia CLNO
Dim hshTbl Como Hashtable
Public Sub startClient (ByVal inClientSocket Como TcpClient, _
ByVal clnNum como secuencia, de ByVal hsTbl Como Hashtable)
Me.tClient = inClientSocket
Me.clNo = clnNum
Me.hshTbl = hsTbl
Dim ctThread Como threading.Thread = Nueva threading.Thread (AddressOf doChat)
ctThread.Start ()
End Sub
Private Sub doChat ()
Dim infntCntr como número entero
Dim rqstCnt como número entero
Dim btsFrom (10024) As Byte
Dim como secuencia ClientData
Dim btsSend Como [Byte] ()
Dim como secuencia responseSrvr
Dim como secuencia RCNT
rqstCnt = 0
Para infntCntr = 1 a 2
infntCntr = 1
Tratar
rqstCnt = rqstCnt + 1
Dim NetworkStream Como NetworkStream = _
tClient.GetStream ()
networkStream.Read (btsFrom, 0, CInt (tClient.ReceiveBufferSize))
ClientData = System.Text.Encoding.ASCII.GetString (btsFrom)
ClientData = _
clientData.Substring (0, clientData.IndexOf ( "$"))
msg ( "Desde el cliente:" + CLNO + ":" + ClientData)
RCNT = Convert.ToString (rqstCnt)
emisión (ClientData, CLNO, True)
Catch ex As Exception
MsgBox (ex.ToString)
Try End
Siguiente
End Sub
End Class
Módulo fin
3 Abrir 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 de "caja de herramientas", a continuación, haga doble clic en "Cuadro de texto" para añadir un nuevo cuadro de texto. Añadir dos más cuadros de texto utilizando el mismo método. Agregue dos botones en el menú "Herramientas".
4 Haga doble clic en el formulario, Pulse la tecla "Ctrl" y "A", a continuación, pulse "Borrar" para eliminar todo el código existente. Copia y pega el siguiente código en el módulo "Form1.vb" para crear el programa de cliente:
importaciones System.Net.Sockets
Las importaciones System.Text
Public Class Form1
Dim clntSckt As New System.Net.Sockets.TcpClient()
srvrStrm tenue Como NetworkStream
Dim como secuencia rddata
Dim infCntr como número entero
Private Sub Button1_Click (remitente de ByVal como System.Object, _
ByVal e As System.EventArgs) Maneja Button1.Click
Dim streamOut As Byte () = _
System.Text.Encoding.ASCII.GetBytes (TextBox2.Text + "$")
srvrStrm.Write (streamOut, 0, streamOut.Length)
srvrStrm.Flush ()
End Sub
Private Sub msg ()
Si Me.InvokeRequired Entonces
Me.Invoke (Nueva MethodInvoker (AddressOf msg))
Más
TextBox1.Text = TextBox1.Text + + Environment.NewLine ">>" + rddata
Terminara si
End Sub
Private Sub Button2_Click (remitente de ByVal como System.Object, _
ByVal e As System.EventArgs) Maneja Button2.Click
rddata = "Personajes conectados al servidor de chat ..."
msg ()
clntSckt.Connect ( "127.0.0.1", 8888)
srvrStrm = clntSckt.GetStream ()
Dim streamOut As Byte () = _
System.Text.Encoding.ASCII.GetBytes (TextBox3.Text + "$")
srvrStrm.Write (streamOut, 0, streamOut.Length)
srvrStrm.Flush ()
Dim ctThread Como threading.Thread = Nueva threading.Thread (AddressOf getMessage)
ctThread.Start ()
End Sub
Private Sub getMessage ()
Para infCntr = 1 a 2
infCntr = 1
srvrStrm = clntSckt.GetStream ()
Dim buffSize como número entero
Instream dim (10024) As Byte
buffSize = clntSckt.ReceiveBufferSize
srvrStrm.Read (in-stream, 0, buffSize)
Dim returndata como secuencia = _
System.Text.Encoding.ASCII.GetString (in-stream)
rddata = "" + returndata
msg ()
Siguiente
End Sub
End Class
5 Ejecutar el programa de servidor en primer lugar con la tecla "F5". Iniciar el programa de cliente con la tecla "F5". Escriba su nombre en "TextBox3", a continuación, haga clic en "Button2" para establecer una conexión con el programa servidor.
6 Escriba un mensaje en "TextBox2", a continuación, haga clic en "Button1" para enviar su mensaje. El mensaje se mostrará en la ventana de salida del servidor.