elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Problema enviar archivo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 4 5 6 Ir Abajo Respuesta Imprimir
Autor Tema: Problema enviar archivo  (Leído 10,242 veces)
Jareth


Desconectado Desconectado

Mensajes: 334



Ver Perfil
Problema enviar archivo
« en: 1 Abril 2007, 00:41 am »

Hola,veran este codigo no me va para hacer lo que quiero,enviar una imagen recibirla,y cargarla en un picture.
Servidor:
Código:
dim ar as string
Open "c:\capture.jpg" For Binary As #1
ar = Space(LOF(1))
Get #1, , ar
Close #1
WS.SendData "paco|" & ar

Cliente:
Código:
Case "paco"
Dim ar As String
Open "c:\captura1.jpg" For Binary Access Write As #1
Put #1, , sData(12)
Close #1
Form4.Picture1.Picture = LoadPicture("c:\capture.jpg")

Aqui debe estar el problema,he probado en vez acces write solo binary y la verdad no se que puede pasar,supongo que todo el code esta bien,lo he hecho yo pero deberia funcionar y no me va.
De antemano muchas gracias.
Saludos.


En línea

vivachapas


Desconectado Desconectado

Mensajes: 612



Ver Perfil
Re: Problema enviar archivo
« Respuesta #1 en: 1 Abril 2007, 01:57 am »

el problema es q no puedes enviar archivos muy grandes con winsock... debes dividirlos en paquetes y enviarlos de a uno y para recibirlso debes juntarlos... no se mucho del tema pero seguro alguien te explica mas... o si buscas como encuentras


En línea

Jareth


Desconectado Desconectado

Mensajes: 334



Ver Perfil
Re: Problema enviar archivo
« Respuesta #2 en: 1 Abril 2007, 13:05 pm »

Es una foto peor probaré a partirlo y juntarlo.
En línea

yovaninu


Desconectado Desconectado

Mensajes: 349



Ver Perfil
Re: Problema enviar archivo
« Respuesta #3 en: 1 Abril 2007, 16:55 pm »

para enviar un archivo de cualquier tamaño a traves del winsock, no tienes que dividirlo tu, eso lo hace el protocolo tCP/ip, lo que tu tienes que hacer es recibirlo paquete a paquete.

si el cliente envia, pues es en el servidor donde tendras que juntar los paquetes y viceversa.

ejemplo de enviar un archivo desde el cliente al servidor:

cliente:
Código:
 Open "c:\unarchivo.jpg" For Binary As #1
  filedata = Input(LOF(1), 1) 'en esta variable string cargo todo el archivo
 Close #1

 ruta="d:\" 'en esta variable esta la ruta en donde se copiara en el servidor el archivo que envio

 filesize = Len(filedata) 'aqui calculo el tamaño de lo que estoy enviando (long) en bytes

Winsock1.SendData "enviar" & "|" & filesize & "|" & ruta 'envio prmeramente una clave "enviar" luego el tamaño "filesize" y la ruta  "ruta"... (aun no estoy enviando el archivo en si)

ahora te vas al servidor:

Código:
Private Sub Winsock_DataArrival(ByVal bytesTotal As Long)
WS.GetData datosS

If Left(datosS, 7) = "archivo" Then
    dato = Split(datosSS, "|") 'una variable dato (dim dato() as string) se encarga de dividir clave, tamaño y ruta
    filesize = dato(1) 'aqui tengo el tamaño enviado por el cliente
    Path = dato(2) 'aqui la ruta
    viene_archivo = True 'prendo un interruptor
    Winsock.SendData "enviar" 'ahora si le pido al cliente que envie el archivo en si
    datosSS = ""
End If

pasamos al cliente:
Código:
Private Sub Winsock_DataArrival(ByVal bytesTotal As Long)

Winsock.GetData DAToS

If DAToS= "enviar" Then

 Winsock.SendData filedata 'aqui es donde realmente envia... aqui es donde el protocolo se encargara de dividir los paquetes... en el servidor habra que juntarlos uno a uno
End If

servidor:

Código:
Private Sub Winsock_DataArrival(ByVal bytesTotal As Long)
WS.GetData datoS

If viene_archivo = True Then
   'declarar arriba: Dim Datos2 As String
   datos2 = datos2 & datoS 'lo que te decia: juntamos parte por parte el archivo que el cliente esta enviando

    If Len(datos2) = filesize Then 'si termina
      Open Path & "nuevoArchivo.jpg" For Binary As #4 'asumo que envias un JPG, sino vas a tener que usar un CommonDialog en el cliente si quieres usar el mismo nombre de archivo que envias del cliente
       Put #4, 1, datos2
      Close #4
      viene_archivo = False 'apagas el interruptor
      datos2 = "" 'vaceas el buffer
      MsgBox "Archivo Recibido con Éxito." 'vuala, aqui termina todo el proceso y depues de esto supongo que tendras que cargar la imagen recibida a un picture, eso ya es tu trabajo.
    End If
End If

si deseas mas info, postea
En línea

~~
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.981


Ver Perfil WWW
Re: Problema enviar archivo
« Respuesta #4 en: 1 Abril 2007, 17:02 pm »

Mira aki tienes otro ejemplo, q a mi me parece mas simple xD sera por q siempre lo uso  ;D ;D
En línea

Jareth


Desconectado Desconectado

Mensajes: 334



Ver Perfil
Re: Problema enviar archivo
« Respuesta #5 en: 1 Abril 2007, 17:57 pm »

He probado los 2 codes y no me va,yo lo que quiero es enviar la imagen que capturo,un screen capture pero lo tengo en un timer claro,y me llegan algunos bytes de la imagen no se volveré a probar.
En línea

~~
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.981


Ver Perfil WWW
Re: Problema enviar archivo
« Respuesta #6 en: 1 Abril 2007, 18:05 pm »

Pues deberia funcionarte.. Has compilado el mio tal y como te lo e puesto?? (cambiando lo unic olas rutas xD)

A ver el funcionamiento es el siguiente:

El cliente hace la petiion de un archivo.
El server enbia al cliente el tamaño del archivo.
El cliente pone en marcha un interruptor. A partir de ese momento y hasta q el tamaño de datos recibidos sea igual al tamaño q nos enviaron antes alamcenamos.
Una vez tengamos todo lo guardamos en un archivo

Ese es el funcionamiento. Es simple, deberia funcionarte..
En línea

Jareth


Desconectado Desconectado

Mensajes: 334



Ver Perfil
Re: Problema enviar archivo
« Respuesta #7 en: 1 Abril 2007, 18:10 pm »

Pongo el code(yo quiero hacer un screen capture):
Servidor:
Código:
Private Sub Timer1_Timer()
Dim foto As New cJpeg
Dim ar As String
Dim filesize As String
foto.SetSamplingFrequencies 2, 2, 2, 2, 2, 2
foto.Quality = 50   ' aqui ajustas la calidad dsd 1 a 100 hasi bajas calidad bajas peso
foto.SampleScreen
foto.SaveFile ("c:\" & "\capture12" & ".jpg")
Open "c:\capture.jpg" For Binary As #1
ar = Input(LOF(1), 1)
filesize = Len(ar)
Close #1
WS.SendData "paco|" & filesize & ar

End Sub

Cliente:
Código:
Case "paco"

Dim ar As String
Dim filesize As String

Dim datos2 As String
filesize = sData(1)
datos2 = datos2 & sData(2)
enviar "yeah|"

 If Len(datos2) = filesize Then
Open "c:\captura1.jpg" For Binary As #1
Put #1, , datos2
Close #1

datos2 = ""
Form4.Picture1.Picture = LoadPicture("c:\captura1.jpg")
End If

Y nada,0 bytes,antes alemnos me hizo 663 bytes pero ahora 0 y es cierto porque es el valor qeu tiene sdata(1).
No sé que hago mal.
Espero me puedan ayudar.
En línea

vivachapas


Desconectado Desconectado

Mensajes: 612



Ver Perfil
Re: Problema enviar archivo
« Respuesta #8 en: 1 Abril 2007, 18:13 pm »

yovaninu muy buena explicacion! al fin eh entendido casi todo!

lo q no entiendo es q significa esta linea

Citar
If Left(datosS, 7) = "archivo" Then

para q es el left(datoS,7)???

Citar
viene_archivo = True 'prendo un interruptor

y como se hace el interruptor? asi nomas? eso es todo? y para q sirve...
En línea

Jareth


Desconectado Desconectado

Mensajes: 334



Ver Perfil
Re: Problema enviar archivo
« Respuesta #9 en: 1 Abril 2007, 18:33 pm »

lo del left es: empezando desde la derecha,contamos 7 caracteres
es decir left(datosS,7) seria de izquierda a derecha solo miramos los 7 primeros,si es igual a "archivo" pues hacemos la accion.
El interruptor es un boolean que lo activa y lo desactiva para hacer acciones o saber el estado,lo activa al principio y luego comprueba el estado de  este para realizar una accion.
Saludos

pd:la verdad es que la explicacion si esta muy bien pero aun sigo sin que funcione...
En línea

Páginas: [1] 2 3 4 5 6 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[SOLUCIONADO] Problema al abrir archivo para enviar « 1 2 3 »
Programación Visual Basic
ŞCØRPIØN-X3 25 10,521 Último mensaje 12 Mayo 2011, 23:34 pm
por ŞCØRPIØN-X3
Enviar a ftp archivo
Scripting
dian1919 4 3,107 Último mensaje 14 Octubre 2022, 21:27 pm
por Danielㅤ
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines