Pregunta

¿Alguien puede indicarme un tutorial sobre la mejor manera de abrir una conexión de cliente a servidor, leer un archivo binario y enviar su contenido de manera confiable a través de la conexión de red?Aún mejor, ¿existe alguna biblioteca de código abierto que ya haga esto y a la que pueda consultar?

¿Fue útil?

Solución

Deberías considerar la serialización binaria y enviarla a través de un socket TCP.

Buena explicación sobre diferentes tipos de serialización:

http://www.dotnetspider.com/resources/408-XML-serialization-Binary-serialization.aspx

Buen manual sobre Cliente/Servidor TCP en C#:

http://www.codeproject.com/KB/IP/tcpclientserver.aspx

Otros consejos

Esto depende de lo que quiera decir con 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 mediante servicios web.Comprimo matrices de bytes, las envío y las descomprimo en el lado remoto.Es muy fácil volver a escribir la matriz de bytes en el disco mediante transmisiones.

Sé que algunas personas prefieren cadenas de base 64 en lugar del byte [].No estoy seguro si importa.

¿Qué tal usar HTTP o FTP?Fueron hechos para esto.

Alex

Dependiendo de dónde envíe el archivo, es posible que desee echar un vistazo a WebClient.UploadFileAsync y WebClient.SubirArchivo.

No usaría HTTP o FTP, para un solo archivo es demasiado sobrecargado y demasiado para codificar, especialmente teniendo un servidor TCP simple casi ya creado para usted en C#.

Los sockets pueden ser la mejor ruta si solo tienes que hacerlo a través de la red.Si utiliza TCP, obtiene la confiabilidad de la comunicación pero afecta la velocidad.Si necesita un mayor rendimiento, puede intentar utilizar UDP.Pero la desventaja de UDP es que la entrega y el pedido de paquetes no están garantizados, por lo que tendría que escribir todo eso usted mismo.

Si necesita transferir archivos a través de la propia web (programáticamente y si no puede usar FTP), entonces un enfoque de servicio web a través de MTOM podría ajustarse a sus necesidades.

Si está construyendo sobre Windows Server 2003 R2, Windows Vista o Windows Server 2008 y realiza transferencias de red internas, otra opción es aprovechar el nuevo Compresión diferencial remota característica.Esto no sólo hace un muy buen trabajo al comprimir un archivo para minimizar el tráfico de red, sino que también lo utiliza directamente la replicación DFS.La desventaja (como desarrollador de .NET) es una tecnología COM+.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top