¿Alguien me puede indicar un tutorial sobre la mejor manera de abrir una conexión de cliente a servidor, leer en un archivo binario y enviar su contenido de manera confiable a través de la conexión de red? Mejor aún, ¿hay una biblioteca de código abierto que ya haga esto a la que pueda referirme?¿Cuál es la mejor manera de enviar un archivo a través de una red usando C#?
Respuesta
Debe buscar en la serialización binaria y enviarla a través de un socket TCP.
Buena explicación sobre los diferentes tipos de serialización:
http://www.dotnetspider.com/resources/408-XML-serialization-Binary-serialization.aspx
buen manual sobre TCP cliente/servidor en C#:
puede crear un cliente y servidor TCP y enviar mensajes a través de TCP. Es bastante trivial en C#.
aquí es ejemplo de un servidor TCP simple:
http://www.goldb.org/goldblog/2007/07/27/CSimpleTCPServer.aspx
Cómo sobre el uso de HTTP o FTP? Estaban hechos para esto.
Alex
Dependiendo de donde va a enviar el archivo, es posible que desee echar un vistazo a WebClient.UploadFileAsync y WebClient.UploadFile.
No utilizaría HTTP o FTP, para un solo archivo es demasiada sobrecarga y demasiado para codificar, especialmente teniendo un servidor TCP simple ya hecho para usted en C#.
Esto depende de lo que quiera decir con la red: si está copiando en una red local, puede usar las operaciones de copia de archivos dentro de System.IO. Si desea enviar a servidores remotos lo hago usando servicios web. Comprimo matrices de bytes y las envío y descomprimo en el lado remoto. La matriz de bytes es muy fácil de volver a escribir en el disco utilizando flujos.
Sé que algunas personas prefieren bases de 64 cadenas en lugar del byte []. no estoy seguro de si importa
sockets puede ser la mejor ruta si estás solo tener que hacerlo a través de la red. Si usa TCP, obtiene la fiabilidad de la comunicación pero tiene un impacto en la velocidad. Si necesita un mayor rendimiento, puede intentar usar UDP en su lugar. Pero la desventaja de UDP es que la entrega y el pedido de paquetes no está garantizado, por lo que tendría que escribir toda esa tubería usted mismo.
Si necesita transferir archivos a través de la web (programáticamente y si no puede usar FTP), un acercamiento de servicio web a través de MTOM podría satisfacer sus necesidades.
Si está construyendo en la parte superior de Windows Server 2003 R2, Windows Vista o Windows Server 2008 y haciendo transferencias de la red interna, otra opción es aprovechar la nueva característica Remote Differential Compression. Esto no solo hace un buen trabajo al comprimir un archivo para minimizar el tráfico de la red, sino que también lo usa directamente la replicación de DFS. Downside (como desarrollador .NET), es una tecnología COM +.
- 1. ¿Cómo enviar un archivo a través de HTTP, la mejor manera, usando Python?
- 2. ¿Cuál es la mejor manera de leer y analizar un archivo de texto grande a través de la red?
- 3. ¿Cuál es la mejor manera de convertir de bitcount de red a máscara de red?
- 4. ¿Cómo puedo enviar un solo archivo usando SVN a través de una red?
- 5. ¿Cuál es la MEJOR manera de reemplazar texto en un archivo usando C#/.NET?
- 6. ¿Cuál es el mejor diseño en .NET para enviar datos a través de una conexión de red no confiable (3G)?
- 7. mejor manera de enviar un mensaje a un hilo
- 8. ¿Cuál es la mejor manera de imprimir directamente en una impresora, como una impresora POS, a través de la web?
- 9. ¿Cuál es la mejor manera de enviar datos insertados desde SQL Server a una aplicación?
- 10. ¿Cuál es la mejor manera de enviar múltiples archivos a un servicio WCF?
- 11. ¿Cuál es la mejor manera de escribir una matriz corta [] en un archivo en C#?
- 12. ¿Cuál es la mejor manera de enviar QStrings en una llamada a función?
- 13. ¿Cuál es la mejor manera de transferir una imagen a través de un servicio web en C#?
- 14. ¿Cuál es la mejor manera de enviar datos de autenticación de formulario web a través de HTTP?
- 15. ¿Cuál es la mejor manera de rastrear los cambios en un formulario a través de javascript?
- 16. ¿Cuál es la mejor manera de enviar grandes lotes de correos electrónicos en ASP.NET?
- 17. Cuál es la mejor manera de cambiar las credenciales de un servicio de Windows usando C#
- 18. ¿Cuál es la mejor manera de verificar la conexión de un cliente a elasticsearch usando Java?
- 19. ¿Cuál es la mejor manera de leer un archivo de texto delimitado por tabulaciones en C#
- 20. ¿Cuál es la mejor manera de declarar una variable global?
- 21. ¿Cuál es la mejor manera de hacer ping a muchos dispositivos de red en paralelo?
- 22. ¿cuál es la mejor manera de editar el archivo csv
- 23. ¿Cuál es la mejor manera de transferir datos de python a otra aplicación en Windows?
- 24. ¿Cuál es la mejor manera de truncar el comienzo de un archivo en C?
- 25. ¿Cuál es la mejor manera de enviar entradas deshabilitadas como parte de una solicitud JQuery AJAX?
- 26. ¿Cuál es la mejor manera de permitir que un usuario busque un archivo en C#?
- 27. Mejor manera de enviar video a través de Socket TCP en C
- 28. ¿Cuál es la mejor manera de leer un archivo completo en std :: string en C++?
- 29. ¿Cuál es la mejor manera de procesar el contenido de sysfs usando C/C++?
- 30. ¿Cuál es la mejor manera de verificar si un archivo existe en C++? (plataforma cruzada)
El segundo enlace es de 2001, que era antiguo incluso cuando esta pregunta era reciente. No es mucho de un tutorial y es más una muestra de código. – YetAnotherRandomUser