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
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


0