Estoy tratando de entender la clase 'SocketAsyncEventArgs' en C#. http://msdn.microsoft.com/en-us/library/system.net.sockets.socketasynceventargs.aspxC# SocketAsyncEventArgs que maneja los datos de recepción y envío
estoy siguiendo este tutorial: http://www.codeproject.com/Articles/83102/C-SocketAsyncEventArgs-High-Performance-Socket-Cod
Ahora estoy atascado en la forma en que exactamente debería procesar los datos con mi servidor. Lo que intento hacer es usar un SocketAsyncEventArgs para un cliente conectado con un espacio Buffer asignado de 512 bytes en el BufferManager. Entonces, lo que quiero hacer es decodificar los datos de byte [] en mi propia clase personalizada (ClientPacket) que contiene el byte [] para decodificar y leer.
Esto es todo bien pero mi servidor no siempre responde con los datos de la pregunta es:
hacer yo utilizo 1 SocketAsyncEventArgs para la recepción y el lazo alrededor de procesar recibir datos, a continuación, asignar una SocketAsyncEventArgs de la piscina siempre Necesito enviar y luego devolverlo al finalizar?
¿Y cómo sabe SocketAsyncEventArgs cuando se completa la lectura? (cuando finaliza con el búfer byte [] antes de que se sobrescriba con datos nuevos), por ejemplo, ¿cómo se devuelve al grupo cuando finaliza si no respondo?
Dijiste estableciéndolo en un nuevo byte [], pero estoy compartiendo un gran bloque de búfer para todos los SocketAsyncEventArgs, si leo de ese bloque de búfer en un paquete, entonces el bloque de búfer podría sobrescribirse en la próxima entrada datos, incluso si copio la matriz de bytes [] va en contra usando el bloque de almacenamiento intermedio para enviar/recibir datos? Además, ¿cómo podría enviar datos con el mismo objeto cuando una operación de recepción podría suceder en cualquier momento? –
Parece que asume una conexión de socket única entre 2 máquinas. No puede reutilizar solo un SocketAsyncEventArgs cuando maneje muchas conexiones simultáneas, que es de lo que creo que se trató la pregunta. (Y para qué es construido SocketAsyncEventArgs). –
gracias SonOfPirate, Sería increíble si puede obtener más información sobre la recepción de gran cantidad de datos. especialmente, aclare por favor si debo volver a llamar a ReceiveAsync cada vez antes de llegar al final; o Framework lo hará por mí? –