 |
|
 |
 |
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Cursor Recien nacido

Registrado: 18 Dic 2003 Mensajes: 1 Ubicación: Chile
|
Publicado: Vie 19/12/2003 Asunto: Problema con multiples conexiones con Winsock |
|
|
Hola amigos:
Tengo el siguiente problema:
Mas abajo el codigo, cabe destacar que saque lo basico para que se entienda bien ya que yo creía que tenia el problema con un ListView, pero fui desmembrando el codigo hasta llegar a lo basico que es lo que varan
y el problema es el mismo....
los usuarios se conectan con winsock y el Form_Load activa el Timer1 enviandole el Nombre de Pc al servidor y este los visualiza en un TextBox. Cuando el Servidor tiene el nombre del pc le envia un dato que es recibido por el cliente este le debe devolver nuevamente su Nombre de Pc
Problema:
cuando se conecta el 1er. pc lo muestra en el TextBox
cuando se conecta el 2do.pc lo muestra en el TextBox etc...
cuando recido por segunda vez al 1er pc que se conecto este no lo muestra en el TextBox, hice un Break al DataArrival del servidor en su linea txt_missing.text = strData para ver que dato tiene strData a su segunda llegada y este viene como "", sin embargo si llega por segunda vez el 2do pc este si muestra su nombre.
Se dan cuenta creo que debo tener un problema en el Evento DataArrival
que a medida que recibe a los Pcs va cerrando las conexiones y mantiene solo al ultimo que se conecta, pero si fuera asi me daria un error 40006 y no lo da, si no que llega el dato vacio a exepcion del ultimo que se conecto porque ya deje solo lo los eventos y metodos básicos del control donde solo deben llegar a 1 TextBox...que me pueden decir ojalá me entiendan...y gracias por su paciencia
Code:
Dim intMax as Long
'Puerto a la escucha
Private Sub Form_Load()
intMax = 0
tcpServer(0).LocalPort = 1001
tcpServer(0).Listen
End Sub
'****************************************************************
Private Sub tcpServer_DataArrival(Index As Integer, ByVal bytesTotal As
Long)
'traspasamos el dato a un TextBox
Dim strData As String
tcpServer(intMax).GetData(strData)
txt_missing.Text = strData
MsgBox "llego mensaje",,"Felicidades"
End Sub
'*************************************************************
Private Sub tcpServer_ConnectionRequest(Index As Integer, ByVal requestID As
Long)
'Creamos una matriz y creamos nuevas instancias de conexion con intMax a medida que la consulta sea igual a 0 y la aceptamos con el metodo Accept
If Index = 0 Then
intMax = intMax + 1
Load tcpServer(intMax)
tcpServer(intMax).LocalPort = 0
tcpServer(intMax).Accept requestID
End If
End Sub
'*************************************************************
Private Sub cmd_enviar_Click()
'esto no hay para que revisarlo pues no influye para nada
tcpServer.SendData txt_Send.Text
End Sub
'*************************************************************
'* CODIGO CLIENTES '*
'*************************************************************
Private Sub Command1_Click(Index As Integer)
'Activamos el Timer1
If Command1(0) Then
Timer1.Enabled = True
End If
If Command1(1) Then
Text1.Text = ""
End If
End Sub
'*************************************************************
Private Sub Form_Load()
sckCliente.RemoteHost = "Pc7" 'Es el nombre del servidor
sckCliente.RemotePort = 1001
sckCliente.Connect
Timer1.Enabled = True 'Activa el Timer para enviar nombre del pc
End Sub
'*************************************************************
Private Sub sckCliente_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
sckCliente.GetData strData
Text1.Text = strData
End Sub
'*************************************************************
Private Sub Timer1_Timer()
'Aqui enviamos el nombre del pc al servidor
sckCliente.SendData sckCliente.LocalHostName
Timer1.Enabled = False
End Sub
Gracias de antemano  |
|
| Volver arriba » |
|
 |
dgonzalez Recien nacido

Registrado: 30 Sep 2008 Mensajes: 1
|
Publicado: Mar 30/09/2008 Asunto: |
|
|
El error esta en que debes cambiar TCP(intmax) por TCP(index) de esta forma de mostrará el mensaje que te esta enviando cualquiera de los dos o más clientes.
Private Sub TCP_DataArrival(index As Integer, ByVal bytesTotal As Long)
Dim INFO As String
TCP(index).GetData INFO
Agrego_Texto "CLIENTE " & TCP(index).RemoteHostIP, INFO
End Sub
Gracias por el PRG a mi sirvio para unas pruebas. Si requieres ayuda en algo que este a mi alcance con gusto de ayudo.
Salu2
Desde Chile también  |
|
| Volver arriba » |
|
 |
|
|
|
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
|
|
 |
|
|
 |
|