Buenas amigos, por lo que veran soy nuevo en este foro. Bueno, les paso a contar mi problema.
Hace unos dias comencé a hacer un chat en Visual Basic mediante Winsock. El chat funciona de maravillas y todo iba bien hasta que se me dio por incluirle una transferencia de ficheros. Pues bien , les explico como realizo la transferencia:
1° - El emisor envia el nombre y el tamaño del fichero al receptor
2° - El receptor captura esos datos, crea el fichero con el nombre que se le pasó y envia una señal al emisor para que le comienze a enviar los datos.
3° - El emisor al recibir la señal, entra en un bucle While que va leyendo el archivo en partes de 1024 y las va enviando
4° - El receptor , cada parte que recibe la va escribiendo
5° - El emisor, cuando envía la última parte, le agrega al final de todo unos caracteres (":::") para que el receptor reconozca que es la ultima parte y cierre el fichero.
Bueno todo este quilombo, lo hice y lo probe en mi máquina (abri el servidor y el cliente y puse la ip de mi maquina) y los archivos se transfieren perfectamente, pero cuando intento transferir un archivo entre dos maquinas distintas no funciona. ¿¿¿Por que no funciona?? Lo máximo que se transfiere entre una maquina y otra son 4KB. No más
Les cito los codigos que realizan las tareas antes mencionadas:
ENVIO DE NOMBRE Y TAMAÑO POR PARTE DEL EMISOR
'Nombre del fichero...
NombreF = CD.FileTitle
'Tamaño del fichero...
TamañoF = FileLen(txtFichero.Text)
'Enviamos ambos datos con sus respectivas cabeceras
WinsockFicheros.SendData "***" & NombreF & "///" & TamañoF
CREACION DEL FICHERO POR PARTE DEL RECEPTOR Y ENVIO DE SOLICITUD DE CONTENIDO
'Informamos que le quieren enviar un fichero
If MsgBox("Desean enviarle el fichero " & NombreF & " de " & TamanoF & Unidad & vbCrLf & "¿Desea aceptarlo?", vbOKCancel, "Transferencia de Ficheros") = vbOK Then
'Si acepta mostramos la ventana de Guardar Como
frmServidor.CDGuardar.Filter = "Todos los archivos|*.*"
frmServidor.CDGuardar.DialogTitle = "Guardar Como..."
frmServidor.CDGuardar.FileName = NombreF
frmServidor.CDGuardar.ShowSave
'Creamos el fichero
FW = FreeFile
Open frmServidor.CDGuardar.FileName For Binary As FW
'y enviamos la peticion del contenido del fichero
frmFicheros.WinsockFicheros.SendData "OKF"
BUCLE QUE REALIZA EL EMISOR EN EL CUAL VA ENVIANDO LOS DATOS EN APRTES DE 1024
FE = FreeFile
'Abrimos el fichero en modo binario
Open frmFicheros.CD.FileName For Binary As FE
Do While Not EOF(FE)
DoEvents
Posicion = Seek(FE)
Seek (FE), Posicion
'Leemos el fichero en pedazos de 1024
Buffer = Input(1024, FE)
'Agregamos cabecera correspondiente al contenido
frmFicheros.WinsockFicheros.SendData "TOT" & Buffer
Loop
Close
'A la ultima cadena le agregamos tres signos ":" para indicarle que cierre el archivo
frmFicheros.WinsockFicheros.SendData ":::"
ESCRITURA EN EL FICHERO POR PARTE DEL RECEPTOR
Put #FW, , Contenido
Como sé que es complicado encontrar el error mirando pequeñas partes de codigo, subi el proyecto a miarroba , les dejo la dire:
http://misficheros.webcindario.com(espero que ande....)
Intente subirlo al ftp que se publica en este foro pero me da error y no me deja.
Un saludo y espero que puedan ayudarme