none
Envió de Multimedia Por Socket RRS feed

  • Pregunta

  • Buen día.

    Estoy realizando una aplicación donde requiero mandar, todo tipo de archivos de una pc a otra, actualmente estoy ocupando la tecnología de los sockets, sin embargo no se como podría enviar pdf, img o audio por socket, hasta el momento solo envió y recibo texto sin problemas.

    O abría alguna otra opción, lo único que me interesa es que pueda enviar cualquier formato de un pc a otro, en Visual Basic .NET.

    Nota: Es Aplicación de Escritorio.

    Agradecería mucho sus aportaciones.


    jueves, 24 de agosto de 2017 19:48

Respuestas

  • Seria mas sencillo usar alguna tecnologia de mas alto nivel, como por ejemplo WCF (que en ultima instancia utiliza internamente un Socket, pero WCF lo hace "transparente" para ti).

    Pero si quieres usar Sockets, lo sorprendente es que digas que puedes enviar y recibir texto sin problemas y sin embargo no sepas mandar un archivo. Piensa que el socket no sabe enviar texto, sino solo bytes, por lo que primero has tenido que convertir el texto en bytes para enviarlo por el Socket. Y el archivo no es nada mas que una secuencia de bytes, por lo que esos bytes se pueden enviar al socket directamente sin convertir nada. No tienes mas que leerlo con File.ReadAllBytes, envias los bytes al socket, y en el lado de destino tomas los bytes y los salvas con File.WriteAllBytes.

    viernes, 25 de agosto de 2017 7:47

Todas las respuestas

  • Seria mas sencillo usar alguna tecnologia de mas alto nivel, como por ejemplo WCF (que en ultima instancia utiliza internamente un Socket, pero WCF lo hace "transparente" para ti).

    Pero si quieres usar Sockets, lo sorprendente es que digas que puedes enviar y recibir texto sin problemas y sin embargo no sepas mandar un archivo. Piensa que el socket no sabe enviar texto, sino solo bytes, por lo que primero has tenido que convertir el texto en bytes para enviarlo por el Socket. Y el archivo no es nada mas que una secuencia de bytes, por lo que esos bytes se pueden enviar al socket directamente sin convertir nada. No tienes mas que leerlo con File.ReadAllBytes, envias los bytes al socket, y en el lado de destino tomas los bytes y los salvas con File.WriteAllBytes.

    viernes, 25 de agosto de 2017 7:47
  • Lo que estoy desarrollando es un servicio de windows, por lo cual no considere el uso de WCF.

    Y agradezco su respuesta, ya que he estado escribiendo los bytes en la nueva Ruta, pensé que el error se debía a la forma en que estoy ocupando los métodos, pero su comentario me confirmo que mi procedimiento estaba en lo correcto, y mi problema se debía a otra cosa, el problema se debía al tamaño del buffer. Pues al enviar el archivo al otro lado del socket quedaba ilegible, esto por que lo tenia configurado solo para el envió de texto.

    De antemano Gracias.



    viernes, 25 de agosto de 2017 17:22
  • Lo que estoy desarrollando es un servicio de windows, por lo cual no considere el uso de WCF.

    ¿Por qué no? WCF rueda perfectamente como servicio Windows. No tienes más que crear el objeto ServiceHost (System.ServiceModel) y pasarle el Address, Binding y Contract y él solito lo gestiona todo.
    viernes, 25 de agosto de 2017 18:14