Visual Basic.NET - Acceder a ficheros remotos

 
Vista:
sin imagen de perfil

Acceder a ficheros remotos

Publicado por Mario (4 intervenciones) el 13/04/2014 16:12:34
Hola buenas, soy nuevo en el foro, antes de nada saludaros a todos...

Estoy haciendo un programa que graba y lee archivos de texto desde un PC a otro PC conectados en red.
Hice una funcion que se le pasa como parámetro la ruta y el nombre del fichero y devulve una cadena con el contenido del fichero de texto.
la funcion trabaja correctamente en local pero cuando le pongo la ruta del otro equipo (IP) ya no encuentra el fichero

La llamada la hago de la siguiente forma:

Dim contenido as string = LeerFicheroTexto("\\IP_remoto\C:\fichero.txt")

Donde IP_remoto es la IP del equipo remoto...


LA PREGUNTA ES: Como sería la forma correcta de leer, grabar, borrar ficheros de texto en otro PC?

Esta es la función.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public Function LeerFicheroTexto(NombFich As String) As String
        'Devuelve el contenido (texto) de un fichero dado en "NombFich"
        Dim cadena As String
 
        If File.Exists(NombFich) Then
            Dim sr As New System.IO.StreamReader(NombFich)
            cadena = sr.ReadToEnd()   'Devuelve el contenido del fichero (texto)
            sr.Close()
            sr.Dispose()
            Return cadena
        Else
            Return "Fichero " & NombFich & " no encontrado."
        End If
    End Function

Espero que podáis ayudarme, gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Acceder a ficheros remotos

Publicado por Pico (167 intervenciones) el 13/04/2014 22:12:08
Con una dirección ip no veo yo muy claro que tenga que funcionar. Como funciona seguro es creando una unidad virtual, unidad virtual z:\ que apunta a un directorio en red.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Acceder a ficheros remotos

Publicado por Mario (4 intervenciones) el 15/04/2014 12:55:41
Hola Pico, gracias por tu respuesta.
Entonces no hay alguna forma diferente de leer un fichero en otro equipo que no sea con una unidad virtual?
De la misma forma que le pones la ruta donde quieres grabarlo en tu equipo, ponerle la ruta pero con el nombre o direccion IP de otro equipo cuando están en red?

Por favor, me puedrías poner un ejemplo de hacerlo con unidades virtuales?

Gracias y saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Acceder a ficheros remotos

Publicado por Pico (167 intervenciones) el 15/04/2014 13:52:24
Existen muchas maneras de hacer todo. Para acceder a un fichero remoto tiene que haber algo en ese ordenador remoto que haga de servidor de archivos. Puedes usar un servidor web con acceso al listado de archivos, puedes poner un servidor ftp, un servidor usando un simple pipe, active directory..., lo que sea. Me imagino que ahora mismo lo único que tendrás es esa carpeta compartida (quizá sea mucho imaginar). Entonces usas un servidor active directory. Para comunicarte con ese servidor necesitas un cliente. La manera más sencilla es hacer que el cliente "explorador de windows" acceda a esa carpeta compartida, y eso se hace creando una unidad virtual. Si no quieres usar unidad virtual tendrías que usar el cliente directamente, y no tendrían que asustarte para nada funciones como DeviceIoControl.

Si tienes en un ordenador un fichero tal que c:\archivos\fichero.txt se trata de compartir en ese ordenador esa carpeta. Una vez compartida, en el otro ordenador creas una unidad virtual, por ejemplo z:\, que apunta a ordenadorremoto\c:\archivos\. Entonces se accede con un z:\fichero.txt.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Acceder a ficheros remotos

Publicado por Mario (4 intervenciones) el 16/04/2014 15:00:24
Está claro, el inconveniente, si no te he entendido mal, es que tendría que crear en cada equipo una unidad de red (Z:) para que cada uno de ellos (son mas de 100 equipos) puedan acceder a leer el contenido un fichero de texto.
Esperaba que hubiera una forma mas rápida a través de código en VB.Net sin tener que crear esa unidad en cada ordenador "cliente". (Del estilo de un Path en la instrucción de lectura del contenido del fichero).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Acceder a ficheros remotos

Publicado por Pico (167 intervenciones) el 16/04/2014 17:14:55
Sí, la manera más sencilla es crear una unidad virtual que apunte a la carpeta donde esté el archivo. Pero eso no hay por qué hacerlo a mano. Puedes crearla con código, acceder al archivo que quieras, y borrarla después o dejarla. Para ello puedes usar la función WNetAddConnection2 o la clase hecha en c# por alguien que se aburría http://www.codeproject.com/Articles/6847/Map-Network-Drive-API o la otra más simple en c http://www.codeproject.com/Articles/90143/Mapping-Network-Drive-using-C
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Acceder a ficheros remotos

Publicado por Mario (4 intervenciones) el 16/04/2014 20:18:18
RESUELTO!

He encontrado una forma de hacerlo sin la necesidad de crear una unidad de red (Z:) en cada equipo cliente.
Mediante código podemos conectar a un recurso previamente compartido en el servidor y acceder mediante usuario/password utilizando el comando NET USE de MsDos

Así cada vez que se ejecute la aplicación podemos acceder a los ficheros del recurso compartido:

Primeramente compartimos en el servidor la carpeta que necesitemos. (RecursoCompartido)

Luego en la aplicación VB.Net escribimos mediante la instrucción "Shell"

Shell("cmd.exe /k NET USE \\Servidor\RecursoCompartido /user:Dominio\usuario password")

Ahora ya podremos acceder con nuestro método a los ficheros de esta carpeta indicándole la ruta:
MetodoLeerFichero ("\\Servidor\RecursoCompartido\fichero.txt")

Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Acceder a ficheros remotos

Publicado por Pico (167 intervenciones) el 16/04/2014 21:22:08
Sí, eso mismo hace WNetAddConnection2: accede a un recurso compartido, con su usuario y contraseña, y si quieres lo conectas además a un recurso local.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

gracias

Publicado por antonio (1 intervención) el 25/11/2014 10:53:49
Gracias por la idea me has ayudado mucho.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Acceder a ficheros remotos

Publicado por Diego (1 intervención) el 29/07/2021 21:42:17
Hermano, hoy me has salvado, utilice parte del código y me soluciono un problema que traía desde hace una semana, muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar