Vamos a ver, quizas yo me estoy explicando mal y te estoy haciendo un pequeño enredo.
En el request esre tú que mediante código asignas un nuevo canal con actIndex
LOAD MiSocket(actIndex) (Tal y como hemos visto hasta ahora). A partir de este momento todo lo que 'este' cliente te envíe y lo que el servidor necesite enviarle, se hará por ese canal (actIndex), de hecho el evento dataarrival te proporciona el INDEX que es precisamente el canal por el que un determinado cliente -y sólo uno- está conectado.
vamos a ver si me explico, según te vayan llegando peticiones de conexión se irá construyendo la siguiente imágen.
Socket(0) Es el servidor y el canal por el que escucha las peticiones
Socket(1) Canal del primer cliente que se conecta
Socket(2) Canal del segundo cliente que se conecta
Socket(3) Canal del tercer cliente que se conecta
Código:
misocket(2).senddata "<datos>" Se lo estamos enviando al cliente 2
for i = 1 to 3
misocket(i).senddata "<datos>" se lo enviamos a todos los clientes
next i
Si el cliente (2) se desconecta lo pones en la pila de desconectados de forma que si alguien pide una nueva conexión, en vez de crear un canal 4, aprovechas el canal 2.
En referencia al protocolo de entendimiento quiero decir que es bueno para controlar el envío-recepción de dattos, que exista un diálog entre los dos extremos. Así cuando el servidor acepta una nueva conexión lo primero que debe hacer es algo parecido a
misocket(actindex).senddata "[QUIENERES]" :doevents
el cliente recibe y en DataArrival tiene algo parecido a esto
Código:
dim strData as string
dim spa as variant
clientSocket.Getdata StrData
spa= split(stradata, ";")
select case ucase(cstr(spa(0)))
case "[QUIENERES]"
clientSocket.senddata "[QUIENERES];Soy chsaul"
case "[EJECUTA]"
....<más código>
case "[DESCONECTA]"
clientSocket.senddata "[DESCONECTA];Me estoy desconectando"
case ...
case ...
end select
Es decir, establecer un lenguaje de entendimiento para saber que pretende el cliente del servidor y a su vez que pretende el servidor de cada uno de los clientes conectados.
Me parecería una buena idea que uses un FTP y te conectes a un servidor de internet, verás como se pasan entre ellos códigos de la clase 250; 350; 251; para declarar sus intenciones.
No sé si ahora me he explicado algo mejor.