Saber como codificar uma sala de chat sem usar um banco de dados pode ajudá-lo a criar um aplicativo cliente /servidor sem ter que gastar tempo criando um banco de dados . Um programa de bate-papo é criado usando dois aplicativos, o cliente eo servidor. A aplicação de servidor irá lidar com todas as conexões do cliente para estabelecer a comunicação . O programa cliente é instalado em qualquer computador que querem se conectar ao servidor de bate-papo com outros clientes. Você pode criar esse aplicativo usando o Microsoft Visual Basic.NET , também conhecido como VB.NET . Coisas que você precisa
Microsoft Visual Basic Express
Visualizar Mais instruções
1
Abra o Microsoft Visual Basic Express , clique em " New Project ... " no painel esquerdo da tela, selecione " Console Application ". Clique em " OK".
2
Pressione " Ctrl" e "A", em seguida, pressione "Delete" para remover todo o código existente. Copie e cole o código abaixo em seu " Module1.vb " para criar o aplicativo do servidor :
System.Net.Sockets importações
Imports System.Text
Module Module1
Dim hshTbl As New Hashtable
Sub Main () Dim
svrSckt As New TcpListener ( 8888 )
Dim TClient Como TcpClient
Dim infntCntr As Integer Dim
cntr As Integer
svrSckt.Start ()
msg ("Servidor Iniciado para conversar .... " )
cntr = 0
infntCntr = 0
Para infntCntr = 1 To 2
infntCntr = 1
CNTR + = 1
TClient = svrSckt.AcceptTcpClient ()
Dim btsFrom ( 10024 ) As Byte
Dim clientData As String 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
broadcast ( clientData + " juntou-se " , ClientData , false)
MSG ( clientData + " juntou-se sala de chat " )
cliente Dim As New handleClinet
client.startClient ( TClient , clientData , Sub
Sub msg (ByVal As String msg )
msg.Trim ()
Console.WriteLine ( ">>" + msg)
End Sub
transmissão Private Sub (ByVal msg As String , _ ByVal
usrname As String , ByVal flg As Boolean )
Dim dicEntry Como DictionaryEntry
Para cada dicEntry Em hshTbl
Dim broadcastSocket Como TcpClient
broadcastSocket = CType ( dicEntry.Value , TcpClient )
Dim broadcastStream Como NetworkStream = _
broadcastSocket.GetStream ()
Dim broadcastBytes Como [ Byte ] ()
Se flg = True Then
broadcastBytes = Encoding.ASCII.GetBytes ( usrname + " diz: " + msg)
Else
broadcastBytes = Encoding.ASCII.GetBytes ( msg)
End If
broadcastStream.Write ( broadcastBytes , 0 , broadcastBytes . Comprimento)
broadcastStream.Flush ()
Próxima
End Sub
Public Class handleClinet
Dim TClient Como TcpClient
Dim ClNO As String Dim
hshTbl Como Hashtable
Public Sub startClient (ByVal inClientSocket Como TcpClient , _ ByVal
clnNum As String , ByVal hsTbl Como Hashtable )
Me.tClient = inClientSocket
Me.clNo = clnNum
Me.hshTbl = hsTbl
Dim ctThread Como Threading.Thread = Novo Threading.Thread (
Private Sub doChat ()
Dim infntCntr AddressOf doChat )
ctThread.Start ()
End Sub As Integer Dim
rqstCnt As Integer Dim
btsFrom ( 10024 ) As Byte
Dim clientData As String Dim
btsSend Como [ Byte ] ()
Dim responseSrvr As String
Dim RCNT As String
rqstCnt = 0
Para infntCntr = 1 To 2
infntCntr = 1
Tente
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 ( "Do cliente :" + ClNO + " :" + clientData )
RCNT = Convert.ToString ( rqstCnt )
broadcast ( clientData , ClNO , verdadeiro)
Pegar ex As Exception
MsgBox ( ex.ToString ) Experimente em
Fim
Próxima
End Sub
End Class
End Module
3
Abra uma nova instância do Microsoft Visual Basic Express , clique em " New Project ... " no painel esquerdo do seu tela, selecione " Windows Forms Application ". Clique em " OK". Clique no painel " Ferramentas " , clique duas vezes em " TextBox " para adicionar uma nova caixa de texto . Adicione mais duas caixas de texto utilizando o mesmo método. Adicione dois botões de o menu " Ferramentas " .
4
clique duas vezes no formulário, pressione "Ctrl" e "A", em seguida, pressione "Delete" para remover todo o código existente. Copie e cole o código abaixo em seu módulo " Form1.vb " para criar o programa cliente :
System.Net.Sockets importações
Imports System.Text
Public Class Form1
Dim clntSckt As New System.Net.Sockets.TcpClient ()
Dim srvrStrm Como NetworkStream
Dim rddata As String Dim
infCntr As Integer
Private Sub Button1_Click (sender System.Object , _
ByVal e As System.EventArgs ) Handles Button1.Click
Dim streamOut As Byte () = _
System.Text . Encoding.ASCII.GetBytes ( TextBox2.Text + " $")
srvrStrm.Write ( streamOut , 0, streamOut.Length )
srvrStrm.Flush ()
End Sub
Sub msg privada ()
Se Me.InvokeRequired Então
Me.Invoke (New MethodInvoker ( AddressOf msg) )
Else < br >
TextBox1.Text = TextBox1.Text + Environment.NewLine + ">>" + rddata
End If End Sub
Private Sub Button2_Click ( sender System.Object , _
ByVal e As System.EventArgs ) Handles Button2.Click
rddata = " conectado a conversar servidor ... " 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 = Novo Threading.Thread ( AddressOf getMessage )
ctThread.Start ()
End Sub Private Sub
getMessage ()
Para infCntr = 1 To 2
infCntr = 1
srvrStrm = clntSckt.GetStream ()
Dim buffSize As Integer
Dim inStream ( 10024 ) As Byte
buffSize = clntSckt.ReceiveBufferSize
srvrStrm.Read ( inStream , 0, buffSize )
Dim returndata As String = _
System.Text.Encoding.ASCII.GetString ( inStream )
rddata = "" + returndata
msg ()
Próxima
End Sub
End Class
5
Execute o programa de servidor primeiro com a tecla " F5 ". Inicie o programa de cliente com a tecla " F5 ". Digite seu nome na " Textbox3 " e clique em " Button2 " para estabelecer uma conexão com o programa servidor.
6
Digite uma mensagem na " TextBox2 "e clique em " Button1 "para enviar sua mensagem. a mensagem será exibida na janela da saída servidor.