[SOLUCIONADO] Duda con winsock

Iniciado por khyv123, Junio 16, 2011, 12:46:14 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Junio 16, 2011, 12:46:14 PM Ultima modificación: Mayo 20, 2014, 07:33:06 AM por blackdrake
He intentado hacer un programa que consta de dos partes (que consta de cliente y servidor) en el que el cliente le manda el contenido de un archivo pdf y el servidor lo recibe y lo guarda en el disco D:, el problema es que al guardarlo el archivo tiene bastante menos extensión que el original y no se puede leer.

El programa es el siguiente (de momento solo tiene lo básico):

CLIENTE:
Código: text
Private Sub cmdEnviar_Click()
Dim var As String
Open Text1.Text For Binary As #1
var = Space(LOF(1))
Get #1, , var
Close #1
If Winsock1.State = 7 Then Winsock1.SendData var
End Sub

Private Sub Form_Load()
Winsock1.RemoteHost = "127.0.0.1"
Winsock1.RemotePort = 123
Winsock1.Connect
End Sub


SERVIDOR:
Código: text
Private Sub Form_Load()
Winsock1.LocalPort = 123
Winsock1.Listen
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock1.Close
Winsock1.Accept requestID
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim i As Integer
Dim var As String
i = bytesTotal
Winsock1.GetData var, vbString
Open "d:\name.pdf" For Binary As #2
Put #2, , var
Close #2
End Sub


Alguien sabe en que puede estar fallando???   ???

podrias colocar la parte que recibes (en estos momentos no tengo el vb y no puedo probar tu code).

Saludos.

Si es un archivo qeu ocupa mas de 1024 bytes lo tendras que enviar por partes...


Mr. Cuando trabajes con WinSock, debes dividir el archivo en varios bloques para que la información llegue completa.
Robert Rath
The Big Devil.

Septiembre 03, 2011, 02:09:27 PM #4 Ultima modificación: Septiembre 03, 2011, 02:11:34 PM por puXtula
El código del servidor está mal, así lo único que vas a conseguir es crear un archivo con el primer byte que recibas del cliente. Lo que tienes que hacer es envíar desde el cliente el tamaño del archivo, almacenarlo en el servidor, e ir almacenando en una variable lo que se recibe:
Winsock1.getdata datos
archivo = archivo & datos
if len(archivo) = tamañodelarchivo then
open bla bla bla
end if


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Mr. Cuando trabajes con WinSock, debes dividir el archivo en varios bloques para que la información llegue completa.
tonterías :P