Bueno... yo una ves lo solucione +/- de la forme q especificas.
Utilizaba un identificador para cada operacion, q no eran mas q unas
constantes declaradas en el cliente y en el servidor, por ejem:
para iniciar el juego -> 1
para salir del juego -> 2
y asi sucesivamente...
Cuando me tocaba enviar array's, los concatenaba su informacion en un String
y la separaba por comas (,) ejem:
si tenia un array[]={1,2,3,4,5,6,7}
yo enviaba un String q tubiera toda esa informacion, ejem:
yo enviaba: Ident & "1,2,3,4,5,6,7"
y lo primero q hacia cuando recibia un dato era revisar la primeraletra del String
y sacar el identificador, y asi saber q tenia q recoger despues del identificador.
es decir, yo leyendo el identificador sabia q venia en el resto de la cadena, si era
un array o si era un numero (en cuyo caso sabia q tenia q convertirlo) o si era
un entero, en fin.
....
Bueno, creo q la idea general de esto, es q debes crearte tu propio protocolo
para q puedas enteder la informacion q envias de un lado al otro.
Espero haberte colaborado en algo.... listo...
Salu2 !!!