Tecnología

Inicio

Cómo código de software de chat sin utilizar una base de datos

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.