Dado que está planeando en TCP (porque quiere estado), necesita desarrollar una estrategia. Obtendrá mucha información sobre cómo establecer una conexión y mover algún tipo de información de un lado a otro. Google le dará más de lo que puede manejar. Sin hacer todo el trabajo, aquí hay algunos pasos para orientarte.
1) Registro de conexión: cuando un cliente se conecta y quiere comunicarse con el servidor, primero debe decir "Hola, estoy aquí y quiero poner algunos dados". Este apretón de manos inicial podría ser una identificación de conexión que se usa para un latido del corazón y/o transacciones. El servidor usará esto para identificar datos y el hilo respectivo si está abierto.
2) Golpe de corazón: ahora que el cliente se ha registrado en el servidor, el cliente es responsable de proporcionar un latido del corazón diciendo que todavía está allí y que todavía planea continuar trabajando. Por lo general, cada 3 - 10 segundos es bueno.
3) Desarrolle el protocolo de Solicitud/Respuesta - Para "cada comando" habrá un proceso formal. Este proceso formal incluirá la identificación de conexión pero también una identificación de solicitud. El cliente no aceptará una respuesta a menos que reciba la identificación de solicitud correspondiente. Además, cada solicitud requerirá una respuesta de éxito o error para identificar si cumple con la API o no. Dentro de la solicitud estará el comando o acción a realizar.Algunas personas usan int para enviar un ID de comando y luego usan un interruptor en el id para llamar a un método de punto de entrada (cmd id = 1 es connect(), cmd id = 2 es rolldice(), etc.). Puede incluir una carga adicional que identifique el resultado del comando.
En resumen, 1 es el handshake, 2 es el keep-alive y 3 es pasar datos de ida y vuelta.
Ahora, si usar socket o WCF, recomendaría tener un conocimiento básico de la programación de TcpClient y luego ejecutarlo con WCF. Se sorprenderá de lo simple que es la programación de socket, pero la sobrecarga es un asesino. Nada para ser intimidado por Es mucho trabajo coordinar llamadas, hilos y sin mencionar la seguridad. WCF, por otro lado, reduce parte de este gasto.
Me echa un vistazo a esta pregunta ...
How to use socket based client with WCF (net.tcp) service?
Consejo: No confiar en los clientes. Normalmente, el cliente debe pedirle al servidor que tire los dados y el servidor enviará el valor rodado a todos los clientes. –
Le sugiero que busque en WCF. Un gran libro para los principiantes de WCF es [WCF Step By Step] (http://shop.oreilly.com/product/0790145302403.do). Puede leer con anticipación el ejemplo del cliente de chat si desea información específica sobre lo que está tratando de hacer. Wcf también simplificará el proceso de autorización de autenticación. – Garvin