Identificación de Sockets

Iniciado por iaorengo, 10 Julio 2011, 05:35 AM

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

iaorengo

Buenas noches a todos :)

Tengo unos problemitas que son como detalles, pero estos detalles no me dejan continuar con mi proyecto. La verdad, agradezco enormemente por lo que me han ayudado hasta acá :)

Espero me puedan ayudar con esto y espero sea lo último también :P


Tengo ya una especie de chat multiconexión con servidor que funciona de 10. En el servidor, cada User que se conecta lo hace con un nick que se agrega a una listbox.
Ej:
Carlitos
Pedrito
Flor
Mica
Tomy

Claramente cada uno fue conectado a un socket diferente, ¿cómo puedo saber qué socket está usando en ese momento cada uno? Es decir, si desde el servidor deseara desconectarlo, ¿cómo se a quién le mando la orden de desconectar? Porque dudo que con winsock1(Pedrito).close funcione :P

Otra duda relacionada es, ¿se puede listar todos los sockets activos y detectar cuáles son y a qué usuario pertenecen?


Bueno, eso es todo por ahora y espero que hasta siempre.
Ya leí algunas guías de Winsock pero casi todas son de MonoConexiones por lo que lo hace inutil. Y las que trataban de multiconexion era básicamente sobre el envio de datos... ninguna hablaba de sockets y su manejo.

Muchas gracias... si sale libero :D

Sanlegas

#1
Me imagino que estas usando un array de sockets... bien si es asi puedes usar el index de cada evento, por ejemplo el del DataArrival y agregar el index al listbox, mas o menos asi...

Código (vb) [Seleccionar]
Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim Nombre As String
Winsock1(Index).GetData Nombre
List1.AddItem Nombre, Index  'Se agrega el nombre y el index del socket a la lista
End Sub


y cuando quieras mandar X dato a X nombre usas el index del listbox

Código (vb) [Seleccionar]
Winsock1(List1.ListIndex).SendData Datos

para saber que sockets estan conectados puedes poner un timer que recorra todos los sockets y comprobar si esta conectados

Código (vb) [Seleccionar]
Private Sub Timer1_Timer()
dim N as long
for N = lbound(Winsock1) to ubound(Winsock1)
       if Winsock1(N).State = 7 then List1.AddItem N  'si esta conectad agregamos solo el index a la lista o haces lo que quieras xP
next
End Sub


veras que es muy facil si lo entiendes, salu2  :P