Autor Tema: programa chat cliente - servidor no funciona en internet  (Leído 3936 veces)

0 Usuarios y 1 Visitante están viendo este tema.

jorgeluisgimenez

  • Bit
  • Mensajes: 4
  • Reputación: +0/-0
    • Ver Perfil
programa chat cliente - servidor no funciona en internet
« en: Enero 07, 2012, 01:33:42 pm »
necesito ayuda, o una guía, les agradezco de antemano.

uso Visual Basic 6, con el control winsock

hice una aplicación cliente-servidor siguiendo uno de tantos ejemplos que hay dando vuelta por la web. es un chat sencillo, pero no funciona a través de internet.

son dos aplicaciones:
la primera es el servidor (que escucha un puerto que yo le indico en un text) 
y la otra aplicación es el cliente (donde le indico la IP a la que tiene que comunicarse en un text, y el puerto al que tiene que comunicarse en otro text)

cuando lo pruebo en mi PC (abriendo las 2 aplicaciones al mismo tiempo) funciona perfecto, en la aplicacion cliente ingreso mi propio IP y un puerto cualquiera y la aplicacion servidor la dejo a la escucha de ese mismo puerto... y funciona perfecto. puedo chatear conmigo mismo

peeeero cuando lo pruebo en dos PC´s distintas no funciona.
(en una, un amigo mio usa la aplicacion cliente y en otra, yo uso la aplicacion servidor) 

los programas no se comunican

que estoy haciendo mal???

la direccion de IP debe escribirse de alguna forma especial? debo usar algun puerto en especifico? ayudaaa por favor!!!

PD) la direccion IP que uso para probar el programa se la digo a mi amigo por telefono, en el momento, así que el problema no tiene nada que ver con que la IP sea fija o variable...

muchas gracias

xkiz ™

  • Moderador Global
  • Gigabyte
  • *****
  • Mensajes: 283
  • Reputación: +30/-11
    • Ver Perfil
    • xkiz ™
Re:programa chat cliente - servidor no funciona en internet
« Respuesta #1 en: Enero 07, 2012, 01:39:28 pm »
¿los puertos que usas están abiertos en los Modems/Routers?
¿Las Ip's publicas son correctas (http://dyndns.checkip.org)?
sin src no hay mucho con lo que se te pueda ayudar mas que revisar eso que te dije recien, podrías exponer algo del source que usas?
« última modificación: Enero 07, 2012, 01:42:32 pm por xkiz ™ »

jorgeluisgimenez

  • Bit
  • Mensajes: 4
  • Reputación: +0/-0
    • Ver Perfil
Re:programa chat cliente - servidor no funciona en internet
« Respuesta #2 en: Enero 07, 2012, 02:02:08 pm »
se me olvidaba: el IP de mi PC lo saco de la pagina:
http://whatismyipaddress.com/

Este es el codigo  completo de la aplicacion Cliente:

Código: (vb) [Seleccionar]
Private Sub Command1_Click()
    'enviamos el contenido de Text2
    Winsock1.SendData Text2.Text & vbCrLf
    'apuntamos al final del contenido del TextBox e
    'insertamos los nuevos datos obtenidos
    Text1.SelStart = Len(Text1.Text) 'coloca el cursor al final del contenido
    Text1.Text = Text1.Text & "Cliente >" & Text2.Text & vbCrLf 'mostramos los datos
    Text1.SelStart = Len(Text1.Text) 'coloca el cursor al final del contenido
    'borramos Text2
    Text2.Text = ""
End Sub

Private Sub Command2_Click()
    'asignamos los datos de conexion
    Winsock1.RemoteHost = Text3.Text
    Winsock1.RemotePort = Text4.Text
    'conectamos el socket
    Winsock1.Close
    Winsock1.Connect
End Sub
Private Sub Command3_Click()
    'cierra la conexion
    Winsock1.Close
    'desplegamos un mensaje en la ventana
    Text1.Text = Text1.Text & "*** Conexion cerrada por el usuario." & vbCrLf
    'desplazamos el scroll
    Text1.SelStart = Len(Text1.Text)
End Sub

Private Sub Winsock1_Close()
    'cierra la conexion
    Winsock1.Close
    'desplegamos un mensaje en la ventana
    Text1.SelStart = Len(Text1.Text)
    Text1.Text = Text1.Text & "*** Conexion cerrada por el servidor." & vbCrLf
    Text1.SelStart = Len(Text1.Text)
End Sub

Private Sub Winsock1_Connect()
    'desplegamos un mensaje en la ventana
    Text1.Text = Text1.Text & "*** Conexion establecida." & vbCrLf
    'desplazamos el scroll
    Text1.SelStart = Len(Text1.Text)
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Dim Buffer As String 'variable para guardar los datos
    'obtenemos los datos y los guardamos en una variable
    Winsock1.GetData Buffer
    'apuntamos al final del contenido del TextBox e
    'insertamos los nuevos datos obtenidos
    Text1.SelStart = Len(Text1.Text) 'coloca el cursor al final del contenido
    Text1.Text = Text1.Text & "Servidor >" & Buffer 'mostramos los datos
    Text1.SelStart = Len(Text1.Text) 'coloca el cursor al final del contenido
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)
'cerramos la conexion
Winsock1.Close
'mostramos informacion sobre el error
MsgBox "Error numero " & Number & ": " & Description, vbCritical
End Sub

y este es el codigo de la aplicacion servidor:

Código: (vb) [Seleccionar]
Private Sub Command1_Click()
    'enviamos el contenido de Text2
    Winsock1.SendData Text2.Text & vbCrLf
    'apuntamos al final del contenido del TextBox e
    'insertamos los nuevos datos obtenidos
    Text1.SelStart = Len(Text1.Text) 'coloca el cursor al final del contenido
    Text1.Text = Text1.Text & "Servidor >" & Text2.Text & vbCrLf 'mostramos los datos
    Text1.SelStart = Len(Text1.Text) 'coloca el cursor al final del contenido
    'borramos Text2
    Text2.Text = ""
End Sub

Private Sub Command2_Click()
    'cerramos cualquier conexion previa
    Winsock1.Close
    'asignamos el puerto local que abriremos
    Winsock1.LocalPort = Text3.Text
    'deja el socket esuchando conexiones
    Winsock1.Listen
    'desplegamos un mensaje en la ventana
    Text1.SelStart = Len(Text1.Text)
    Text1.Text = Text1.Text & "*** Escuchando conexiones." & vbCrLf
    Text1.SelStart = Len(Text1.Text)
End Sub

Private Sub Command3_Click()
    'cierra la conexion
    Winsock1.Close
    'desplegamos un mensaje en la ventana
    Text1.SelStart = Len(Text1.Text)
    Text1.Text = Text1.Text & "*** Conexion cerrada por el usuario." & vbCrLf
    Text1.SelStart = Len(Text1.Text)
End Sub

Private Sub Winsock1_Close()
    'cierra la conexion
    Winsock1.Close
    'desplegamos un mensaje en la ventana
    Text1.SelStart = Len(Text1.Text)
    Text1.Text = Text1.Text & "*** Conexion cerrada por el Cliente." & vbCrLf
    Text1.SelStart = Len(Text1.Text)
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
    'mostramos un mensaje en la ventana
    Text1.SelStart = Len(Text1.Text)
    Text1.Text = Text1.Text & "*** Peticion numero " & requestID & vbCrLf
    Text1.SelStart = Len(Text1.Text)
    'cerramos previamente el socket
    Winsock1.Close
    'aceptamos la conexion
    Winsock1.Accept requestID
    'desplegamos un mensaje en la ventana
    Text1.SelStart = Len(Text1.Text)
    Text1.Text = Text1.Text & "*** Conexion aceptada, listo para interactuar." & vbCrLf
    Text1.SelStart = Len(Text1.Text)
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Dim Buffer As String 'variable para guardar los datos
    'obtenemos los datos y los guardamos en una variable
    Winsock1.GetData Buffer
    'apuntamos al final del contenido del TextBox e
    'insertamos los nuevos datos obtenidos
    Text1.SelStart = Len(Text1.Text) 'coloca el cursor al final del contenido
    Text1.Text = Text1.Text & "Cliente >" & Buffer 'mostramos los datos
    Text1.SelStart = Len(Text1.Text) 'coloca el cursor al final del contenido
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)
    'cerramos la conexion
    Winsock1.Close
    'mostramos informacion sobre el error
    MsgBox "Error numero " & Number & ": " & Description, vbCritical
End Sub
Adjunto las imagenes de los forms.



« última modificación: Enero 07, 2012, 11:41:48 pm por xkiz ™ »

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:programa chat cliente - servidor no funciona en internet
« Respuesta #3 en: Enero 07, 2012, 07:01:31 pm »
El puerto que esa en Text4.Text, tenes que abrir en tu router, si pasas el modelo de tu router te puedo ayudar.
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

jorgeluisgimenez

  • Bit
  • Mensajes: 4
  • Reputación: +0/-0
    • Ver Perfil
Re:programa chat cliente - servidor no funciona en internet
« Respuesta #4 en: Enero 08, 2012, 12:14:18 am »
el modelo de router:

HUAWEI
model: EchoLife HG520c
name: Home Gateway

eso figura en la etiqueta de está atras del router.
podrías aclararme un poco como es eso de "abrir el puerto"? (o pasarme algún link con informacion)
¿para que sirve?
¿solo tiene que hacerlo el servidor?
¿o el cliente también?
me llama la atención que en ninguno de los tutoriales para hacer el chat, decía nada al respecto... siendo algo tan importante

muchas gracias

xkiz ™

  • Moderador Global
  • Gigabyte
  • *****
  • Mensajes: 283
  • Reputación: +30/-11
    • Ver Perfil
    • xkiz ™
Re:programa chat cliente - servidor no funciona en internet
« Respuesta #5 en: Enero 08, 2012, 12:31:57 am »
ahí muestra como abrir los puertos en tu Router

[youtube]http://www.youtube.com/watch?v=4vmBKPplOJQ[/youtube]

Link: http://www.youtube.com/watch?v=4vmBKPplOJQ