Tema: Crear un chat (Versión Imprimible)
Volver a la versión Original de este tema
Lugar donde fue posteado: Www.ForoMsn.comVisual BasicManuales -> Crear un chat

Enviado por ambu en 25/04/2009 06:29:50
Crear un chat

Ola gente,en este tutorial os enseñare a crear un chat con visual basic 6
Recomiendo verlo para los ke estan iniciando en el tema del winsock ya ke este ejemplo les vendra mui bien

Bueno vamos a empezar a programar:


Abrimos dos proyectos,a uno le llamaremos "Cliente" y al otro "Servidor".
En los dos agregamos Microsoft Winsock Control 6.0 (Proyecto/Components/Microsoft Winsock Control 6.0)


Vamos con el Cliente:
Creamos:
-1 Label:En Caption le ponemos "IP".
-1 Label:En Caption le ponemos "Puerto".
-1 TextBox:En Name ponemos "txtip".
-1 TextBox:En Name ponemos "txtport".
-1 CommandButton:En Name ponemos "cmdconnect" y en Caption "Conectar".

Ke kede algo asi:


Seguimos creando...
-1 TextBox:En Name ponemos "txtlog",en Multiline le ponemos True y en ScrollBars ponemos 2 - Vertical.
-1 TextBox:En Name ponemos "txtsend".
-1 CommandButton:En Name ponemos "cmdsend" y en Caption "Enviar"
-1 WinSock:El nombre lo dejamos por defecto "WinSock1".

kedaria algo asi...



Vamos al código:

CITA

Private Sub cmdConnect_Click() 'Intenta conectar con lo ke pusistes en "txtip" y en "txtport".
On Error GoTo ErrSub

      With Winsock1
            .Close
            .RemoteHost = txtIP 'El RemoteHost sera el ke pongamos en el TextBox "txtip".
            .RemotePort = txtPort 'Y el puerto el ke pongamos en "txtport".
            .Connect 'Conectamos...
      End With
Exit Sub
ErrSub:
MsgBox "Error : " & Err.Description, vbCritical 'Si ai algun error nos lo muestra con su descripcion.
End Sub


Private Sub cmdSend_Click()
On Error GoTo ErrSub


      Winsock1.SendData txtSend

      txtLog = txtLog & "Cliente : " & txtSend & vbCrLf 'Muestra en "txtlog" Cliente: seguido de lo ke pusimos en "txtsend".
      txtSend = ""

Exit Sub
ErrSub:
MsgBox "Error : " & Err.Description 'Si hai un error nos lo muestra con su descripcion.
Winsock1_Close 'Cierra la conexion.
End Sub

Private Sub Winsock1_Close()

      Winsock1.Close   'Cierra la conexion.
      txtLog = txtLog & "Desconectado" & vbCrLf 'El "vbCrLf" sirve para seguir en la linea de abajo y no mostrar todo seguido.

End Sub

Private Sub Winsock1_Connect()

txtLog = "Conectado a " & Winsock1.RemoteHostIP & vbCrLf 'Muestra en el "txtlog" Conectado seguido del RemoteHostIP.

End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Dim dat As String
      
      Winsock1.GetData dat, vbString
      txtLog = txtLog & "Servidor : " & dat & vbCrLf 'Muestra en el "txtlog" del cliente Servidor: seguido de los datos ke nos envia el servidor.

End Sub

Private Sub Winsock1_Error(ByVal Number As Integer, _
                                        Description As String, _
                                        ByVal Scode As Long, _
                                        ByVal Source As String, _
                                        ByVal HelpFile As String, _
                                        ByVal HelpContext As Long, _
                                        CancelDisplay As Boolean)

      txtLog = txtLog & "Error : " & Description & vbCrLf 'Si hai algun error nos lo muestra con su descripcion.

      Winsock1_Close
End Sub



Vamos ahora con el Servidor:
Creamos:
-1 Label:En Caption ponemos "Escuchar al puerto".
-1 TextBox:En Name ponemos "txtport".
-1 CommandButton:En Name ponemos "cmdlisten" y en Caption ponemos "Poner a la escucha".

ke kede algo asi...




Seguimos añadiendo...
-1 TextBox:En Name ponemos "txtlog",en Multiline ponemos True y en ScrollBars ponemos 2 - Vertical.
-1 TextBox:En Name ponemos "txtsend".
-1 CommandButton:En Name ponemos "cmdsend" y en Caption ponemos "Enviar".
-1 WinSock:En Name lo dejamos por defecto "WinSock1".

kedaria algo asi...



vamos al codigo

CITA
Private Sub cmdListen_Click() 'Pone a la escucha el puerto ke aveis puesto en "txtport".
On Error GoTo errorSub

      With Winsock1
            .Close
            .LocalPort = txtPort 'El LocalPort sera el ke pongamos en "txtport".
            .Listen 'Lo ponemos a la escucha...
      End With

Exit Sub
errorSub:
MsgBox "Error : " & Err.Description, vbCritical 'Si ai algun error nos lo muestra con su descripcion.
End Sub

Private Sub cmdSend_Click()
On Error GoTo errorSub

      Winsock1.SendData txtSend
      
      txtLog = txtLog & "Servidor : " & txtSend & vbCrLf 'Muestra en "txtlog" Servidor: seguido de lo ke pusimos en "txtsend".
      txtSend = ""

Exit Sub
errorSub:
MsgBox "Error : " & Err.Description 'Si hai un error nos lo muestra con su descripcion.
Winsock1_Close 'Cierra la conexion
End Sub


Private Sub Winsock1_Close()

      Winsock1.Close 'Finaliza la conexion.

      txtLog = txtLog & "Desconectado" & vbCrLf 'El "vbCrLf" sirve para seguir en la linea de abajo y no mostrar todo seguido.

End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
      
      If Winsock1.State <> sckClosed Then
            Winsock1.Close 'Cierra la conexion.
      End If

      Winsock1.Accept requestID 'Acepta la conexion.
      
      txtLog = "Cliente conectado. IP : " & _
                     Winsock1.RemoteHostIP & vbCrLf 'Muestra en "txtlog" Cliente conectado. IP : seguido de la ip ke se conecto.

End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim dat As String

      Winsock1.GetData dat, vbString
      txtLog = txtLog & "Cliente : " & dat & vbCrLf 'Muestra en el "txtlog" del servidor Cliente: seguido de los datos ke nos envia el cliente.

End Sub

Private Sub Winsock1_Error(ByVal Number As Integer, _
                                        Description As String, _
                                        ByVal Scode As Long, _
                                        ByVal Source As String, _
                                        ByVal HelpFile As String, _
                                        ByVal HelpContext As Long, _
                                        CancelDisplay As Boolean)

      txtLog = txtLog & "Error : " & Description & vbCrLf 'Si hai algun error lo muestra con su descripcion.

      Winsock1_Close

End Sub


Y eso es todo,Abris el servidor le dais a escuchar en el puerto ke kerais i le dais a poner a la escucha,despues abris el cliente i poneis en ip la ip a la ke os kerais conectar i en puerto poneis el mismo ke en el servidor porke sino no se os conectara...y lo ke escrivas en el cliente cuando le des al boton enviar lo muestrará en el servidor y con el servidor igual.

Una imagen del chat en funcionamiento

Enviado por TecnoVirtu en 25/04/2009 22:16:00
Esto es para crear un cliente IRC o para crear
un server irc?


Saludos!


Mi nuevo blog con 100 visitas!
Enviado por perro777 en 26/04/2009 08:52:19
CITA
Esto es para crear un cliente IRC o para crear
un server irc?


Saludos!


Es para crear un chat de conexion directa, usando un cliente y un servidor.

Y Ambu no piensas colocar la fuente?
Enviado por ambu en 28/04/2009 06:31:16
klaro man

PERO EL TUTO LO HISE YO

pero komo muestra en la imagen

primero lo habia posteado en esa comunidad!!
Enviado por RevangelyonX en 29/04/2009 01:40:51
Muy bueno ;)



Información sacada de www.ForoMsn.com