Autor
|
Tema: Como enviar archivo por internet (Leído 2,833 veces)
|
~~
|
Hola: Vereis os cuento mi problema: Estoy intentando enviar archivos por internet, para ello, elijo un archivo y hago esto: Dim h as string
Open "C:\imagen.jpg" for binary as #1 h = space(LOF(1)) get #1,,h close #1
Y ahora lo mando con el winsock asi: Hasta ahí creo q lo hago todo bien (eso creo) pero el problema esta al recibir el archivo. Uso esto: Dim A as string ws.getdata A txtRecibido.text = A
Private Sub txtRecibido_Change()
If left(txtRecibido.text, 3) = "img" then
Open "C:\captura.jpg" For Binary As #1 Put #1, , Mid(txtRecibido.Text, 4) Close #1
End If
Pero cuando miro el archivo q e recibido, resulta q esta incompleto . Eh provado a poner las funciones en timers, por si acaso no le daba tiempo a recoger bien los datos y nada.... Y lo curioso es q lo hago con un archivo txt por ejemplo y si q me funciona Alguien sabe por qué pasa esto????????? Muxas gracias 1S4ludo
|
|
|
En línea
|
|
|
|
WarGhost
I love basket
Desconectado
Mensajes: 1.070
|
eso ami me pasava es por el textbox prueva metiendolo a una varible .
|
|
|
En línea
|
|
|
|
~~
|
Pues nada q no hay manera.... Mira te pego el codigo tal cual a ver si me ekivoco en algo y me puedes ayudar... CLIENTE: Private Sub ws_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim data As String 'Declaracion Dim vData As Variant 'Declaracion Dim pr 'Declaracion
ws(Index).GetData data vData = Split(data, "|")
If Left(data, 3) = "esc" Then ' Aki esta el if para la captura de pantala, el resto estan en el Text
Open "C:\captura.jpg" For Binary As #1 Put #1, , Mid(data, 4) Close #1
Exit Sub End If
Select Case vData(0) Case "Conexion" 'Cose de conexion Set pr = ListConexion.ListItems.Add(, Index & "|", vData(1)) 'Agreamos una nueva conexion a listview pr.SubItems(1) = vData(2) & "/" & ws(Index).RemoteHostIP pr.SubItems(2) = vData(3) & "/" & vData(4) pr.SubItems(3) = vData(5) pr.SubItems(4) = vData(6) End Select
txtRecibido.Text = data
End Sub SERVER: Private Sub txtRecibido_Change()
If txtRecibido.Text = "esc" Then ' Toma la imagen del esc remoto
foto.SetSamplingFrequencies 2, 2, 2, 2, 2, 2 foto.Quality = 50 foto.SampleScreen foto.SaveFile ("c:\" & "\capture" & ".jpg")
Dim ñ As String
Open "C:\capture.jpg" For Binary As #1 ñ = Space(LOF(1)) Get #1, , ñ Close #1
ws.SendData "esc" & ñ
End If Como veras estoy usando tu codigo de la conexion inversa en el cliente y en el server el modulo cJpeg. Pero no tengo ni idea de por q no funciona Muxas gracias 1S4ludo
|
|
|
En línea
|
|
|
|
WarGhost
I love basket
Desconectado
Mensajes: 1.070
|
No funciona porque el winsock al enviar paquetes de gran tamaño los porte y los envía en varias veces por eso lo que tienes que hacer es enviar el tamaño luego guardar todos los datos que llegan asta que la variable llega a el peso enviado si no, no creo que te funciones. haora te ago un ejemplo Salu2, WarGhost
|
|
|
En línea
|
|
|
|
WarGhost
I love basket
Desconectado
Mensajes: 1.070
|
Mira este codigo que acavo de hacer: Server:Private Sub Form_Load() ws.Close ws.Connect "127.0.0.1", 2848 End Sub
Private Sub ws_Connect() ws.SendData "Tam:" & FileLen("C:\Prueba.txt") End Sub
Private Sub ws_DataArrival(ByVal bytesTotal As Long) Dim data As String Dim Send As String ws.GetData data
If Left(data, 8) = "SendFile" Then Open "C:\Prueba.txt" For Binary As #1 Send = Space(LOF(1)) Get #1, , Send Close #1
ws.SendData Send End If
End Sub Cliente:Dim DataFile As String Dim LenFile As Long Dim Envio As Boolean
Private Sub Form_Load() ws.LocalPort = 2848 ws.Listen Envio = False End Sub
Private Sub ws_ConnectionRequest(ByVal requestID As Long) ws.Close ws.Accept requestID End Sub
Private Sub ws_DataArrival(ByVal bytesTotal As Long) Dim data As String ws.GetData data
If Envio = True Then DataFile = DataFile & data ProgressBar1.Value = Len(DataFile) If Len(DataFile) = LenFile Then Open "C:\Prueba2.txt" For Binary As #1 Put #1, , DataFile Close #1 MsgBox "El Fichero se a Enviado Correctamente" Envio = False ProgressBar1.Value = 0 End If End If
If Left(data, 4) = "Tam:" Then LenFile = Mid(data, 5) ProgressBar1.Max = LenFile Envio = True ws.SendData "SendFile" End If e puesto ademas para que salga un ProgressBar1 si no lo quiere simplemente elimina estas lineas: ProgressBar1.Max = LenFile ProgressBar1.Value = 0 ProgressBar1.Value = Len(DataFile) Espero que te aya ayuda. P.D: Gracias por usar el codigo del Papper Salu2, WarGhost
|
|
« Última modificación: 12 Septiembre 2006, 19:32 pm por WarGhost »
|
En línea
|
|
|
|
dPix
Desconectado
Mensajes: 222
¬_¬ - ¬O.o
|
Hola buenas, ¿mediante que protocolo podríamos enviar un archivo usando este método, es decir, mediante que método? La pregunta es muy sencilla, espero haberme explicado bien. Salu2, dPix
|
|
|
En línea
|
|
|
|
|
~~
|
Hola:
Muxas gracias por la ayuda WarGhost, ahora mismo lo modifiko (asi q me extrañava a mi q los block de notas si los enviara... xDD)
1S4ludo
|
|
|
En línea
|
|
|
|
LixKeÜ
Desconectado
Mensajes: 392
solo es lo que es y la verdad siempre da de ganar
|
Una pregunta acaso no es TCP/IP
|
|
|
En línea
|
|
|
|
WarGhost
I love basket
Desconectado
Mensajes: 1.070
|
como ?¿?
|
|
|
En línea
|
|
|
|
|
|