Primero: utiliza listbox para listar tanto los directorios como los ficheros, lo mas aconsejable es que utilizes un bucle para ir agregando cada uno de los directorios a una variable de tipo string separandolos por comas, luego no tienes mas que enviar esa string y en el cliente utilizar la funcion split para separar la cadena por comas y asi tener un array con cada uno de los directorios por separado.
Ten en cuenta que para crear cualquier tipo de aplicacion de red es imprescindible crear un protocolo propio, es decir, como va a saber tu troyano que es lo que tiene que hacer con los datos que le envias, ejemplo:
para listar directorios puedes enviar un par de letras clave, por ejemplo "lf" y separando por comas los parametros (usas la funcion split para volver a separarlos") le indicas otras opciones que valla a necesitar el server para ejecutar la accion deseada, lo mismo para el cliente.
NO ES RECOMENDABLE que el cliente distinga la orden a realizar a partir de lo que el sabe, es decir:
El cliente envia la orden de listar directorios y ya asume que lo siguiente que reciba va a ser la lista de directorios. Como te he dicho antes, envia letras clave para distinguir la orden, te digo por experiencia propia que luego se producen muchas confusiones al usarlo, las cosas no funcionan siempre igual en local que en remoto, y aun asi hay que intentar que los programas sean capaces de funcionar correctamente en cualquier situacion
Espero haberte ayudado.