Visual Basic - duda con chat

Life is soft - evento anual de software empresarial
 
Vista:

duda con chat

Publicado por arenoide (2 intervenciones) el 17/01/2006 15:34:40
Hola, tengo una duda que creo que es muy tonta, pero no logro saber qué es lo que falla.

Estoy realizando un chat entre dos ordenadores. Es una cosa muy simple, añado el componente winsock tanto en servidor como en cliente, configuro los puertos y la ip, los conectoy envío la información entre ellos. Sencillísimo. La cosa es que la aplicación servidor-cliente me funciona perfectamente en red interna, pero en el momento en el que las ip que les pongo son la ip de algún ordenador de internet, no se conecta.

aquí pongo el código tanto del servidor como del cliente a ver si alguno encuentra el error que llevo bastante tiempo y no logro dar con él:

SERVIDOR

*********componentes*********
listbox --> listmsg (aquí debe salirte la conversación)
textbox -->textmsg (aquí escribes)
command --> cmdsend (con este botón mandas lo que has escrito)
winsock --> tcpserver (necesario para la conexión)

**************código************

Dim strdata As String
Dim sClient As String
Dim temp As Integer

Private Sub Form_Load()
tcp.localport = 888
tcpserver.Listen
sClient = "cliente"
End Sub

Private Sub tcpServer_ConnectionRequest(ByVal requestID As Long)
tcpserver.Close
tcpserver.Accept requestID

End Sub

Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long)
tcpserver.GetData strdata
lstMsg.AddItem strdata
End Sub

Private Sub cmdSend_Click()
strdata = sClient & ": " & txtmsg.Text
lstMsg.AddItem strdata
tcpserver.SendData strdata
txtmsg.Text = ""
End Sub

Private Sub tcpServer_Close() 'si se corta la conexion
'lstMsg.AddItem "El cliente se ha desconectado"
tcpserver.Close
End Sub

*******************************

CLIENTE

**********componentes**********
winsock --> tcpclient
listbox --> lstmsg
textbox --> mstmsg

********************código**************
Dim nickName As String
Dim strdata As String
Dim direcIP As String

Private Sub Form_Load()
direcIP = InputBox("IP del servidor: ")
nickName = "cliente"
tcpclient.Connect direcIP, 888
End Sub
Private Sub cmdSend_Click()
strdata = nickName & " : " & txtmsg.Text
tcpclient.SendData strdata
lstMsg.AddItem strdata
txtmsg.Text = "" 'Limpia la caja de texto
End Sub

Private Sub tcpClient_DataArrival(ByVal bytesTotal As Long)
tcpclient.GetData strdata
lstMsg.AddItem strdata
End Sub

Private Sub tcpClient_Close() 'Si se rompe la conexión (el servidor se desconecta)
tcpclient.Close ' Se cierra la conexión
MsgBox "El servidor se ha desconectado", vbCritical, "Cerrando" 'Se muestra msgbox
End ' Se cierra el programa cliente
End Sub
*****************************************

Vaya, que el programa funciona, pero no se por qué, sólo por red interna y no por internet como he dicho antes. Por favor, si alguien sabe qué puede ser, si no quiere arreglarlo, que me diga en lo que fallo y ya indagaré, pero esque estoy completamente perdido.

GRACIAS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:duda con chat

Publicado por Mr. Sade (31 intervenciones) el 18/01/2006 01:20:43
chat client-servidor es unos de mis favoritos para programar.
no he probado tu codigo pero si dices que funciona, deberia funcionar en todos lados.

asegurate de que el puerto este abierto y que la IP sea la publica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:duda con chat

Publicado por arenoide (2 intervenciones) el 20/01/2006 12:11:09
Me pondrías mandar tu código?

el puerto 888 del router no está abierto, pero cierro el messenger y le pongo el puerto por el que transmite éste y tampoco me lo coge.´

¿Por qué puede ser?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar