2011-10-31 10 views
8

¡Actualmente soy nuevo en C# y necesito entender la arquitectura simple de servidor-cliente!Programación de red simple en C# para principiantes?

Actualmente estoy tratando de escribir un programa simple de servidor/cliente donde básicamente un cliente puede enviar una variable a un servidor y el servidor puede enviarla a otro cliente. El problema es que estoy realmente ciego a esto ya que todavía soy muy nuevo en C# aunque tengo cierta experiencia con Java (pero aún no con redes).

Mi pregunta es:

  1. ¿Cuántos archivos voy a tener que escribir?
  2. ¿Alguien puede ser tan amable de proporcionarme un marco o un ejemplo para un programa como este?
  3. ¿Qué es un servidor TCP?

Esto está destinado a ser para un juego en línea. Un cliente lanzará los dados y el servidor debe mostrar a todos los demás clientes que este es el valor que obtuvo el primer cliente.

¡Cualquier ayuda sería muy apreciada!

+4

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. –

+1

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

Respuesta

3

1) El número de archivos dependerá de la aplicación particular. Puede crear esta arquitectura simplemente como 1 clase para el servidor y 1 clase para el cliente (puede tener más de una clase en un archivo). Dependiendo de la complejidad y las elecciones que realice durante el diseño, podría tener muchos archivos o solo algunos.

2) Un buen tutorial para un simple servidor TCP/cliente se puede encontrar here

3) Un servidor TCP es un proceso que espera una conexión de un cliente TCP. TCP significa Protocolo de control de transmisión. Desde Wikipedia: TCP proporciona la entrega confiable y ordenada de una secuencia de bytes desde un programa en una computadora a otro programa en otra computadora.

4

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?

Cuestiones relacionadas