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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Problema con envio archivos por winsock
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con envio archivos por winsock  (Leído 2,014 veces)
newbie007

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Problema con envio archivos por winsock
« en: 15 Octubre 2011, 02:18 am »

tengo un probleca con us sistema para enviar archivos

Code Cliente:

Código:
Private Sub Command1_Click()
Estado.Caption = "Enviando petición de imagen.."
TCP.SendData "imagen"
End Sub

Private Sub Command2_Click()
TCP.RemoteHost = IP.Text
TCP.RemotePort = 1359
TCP.Connect
End Sub

Private Sub Form_Load()
Dim existelafoto As Boolean
If Existe(App.Path & "\tmp.png") Then
existelafoto = True
Else
existelafoto = False
End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
TCP.Close
End Sub

Private Sub TCP_Close()
Estado.Caption = "Conexión cerrada"
End Sub

Private Sub TCP_Connect()
Estado.Caption = "Conectado"
End Sub

Private Sub TCP_DataArrival(ByVal bytesTotal As Long)

Estado.Caption = "Recibiendo imagen.."

Dim arxivo As String


Dim numero As Integer
numero = 1

While existelafoto = True

If Existe(App.Path & "\imagen" & numero & ".jpg") <> 0 Then
numero = numero + 1
Else
existelafoto = False
End If

Wend


Dim datos As String
TCP.GetData datos

arxivo = arxivo & datos

Open App.Path & "\imagen" & numero & ".jpg" For Binary As #1
Put #1, , arxivo
Close #1


If Existe(App.Path & "\imagen1.jpg") <> 0 Then
existelafoto = True
Else
existelafoto = False
End If

Estado.Caption = "Imagen recibida"

End Sub
Private Sub TCP_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
Estado.Caption = "Error " & Number
End Sub

Public Function Existe(sArchivo As String) As Integer
Existe = Len(Dir$(sArchivo))
End Function



Y el Server:
Código:
Private Sub Command1_Click()
Form1.Visible = False
End Sub

Private Sub Form_Load()
TCP.Close
TCP.LocalPort = 1359
TCP.Listen
End Sub

Private Sub TCP_ConnectionRequest(ByVal requestID As Long)
TCP.Close
TCP.Accept requestID
End Sub

Private Sub TCP_DataArrival(ByVal bytesTotal As Long)
Dim datos As String
TCP.GetData datos
If datos = "imagen" Then

captura.Area = Pantalla
captura.captura
imagenTemporal.Picture = captura.Imagen

SavePicture imagenTemporal.Picture, App.Path & "\imagentemporal.jpg"

Dim Buf As String * 1024
Dim Todo As String
Open App.Path & "\imagentemporal.jpg" For Binary As #1
Do While Not EOF(1)
DoEvents
Get #1, , Buf
Todo = Todo & Buf
Loop
Close #1

TCP.SendData Todo


End If
End Sub
/code]

me sale error 10061




« Última modificación: 15 Octubre 2011, 15:48 pm por raul338 » En línea

Yoghurt

Desconectado Desconectado

Mensajes: 122


Si alguien se molesto en escribir, justo es leer.


Ver Perfil WWW
Re: Problema con envio archivos por winsock
« Respuesta #1 en: 15 Octubre 2011, 03:00 am »

Utiliza el depurador.

en la linea:
Código:
Put #1, , arxivo

cambiala a:
Código:
dim hFile As Integer
hFile = FreeFile()
Open arxivo For Binary Access Write Lock Write As hFile
Put #hFile, 1, arxivo

** si estas recibiendo 1 archivo y te llega otra conexion entonces no podés abrir 2 archivos con un mismo identificador **

Y respecto a tu código, la mejor respuesta que puedo darte es que Depures, linea por línea. Ahí encontrarás en que te equivocaste.

Te digo también, que las conexiones wsock son asyncronas por lo que si pones:
Código:
wsock.connect remoteHost, remotePort
wsock.SendData "Hola Mundo!"
no necesariamente se conectará de inmediato y por lo tanto, la linea contigua dará error pues no puede enviar datos si aun sigue conectandose.

Te recomiendo hacer una rutina en donde esperes a que se conecte para luego seguir ejecutando código. Ej:
Código:
wsock.Connect remoteHost, remotePort
If (waitForConnect(wsock, varSecondsToWait) = True) ' se conectó?
  '// Codigo a ejecutar ahora que ya se conectó
End If


En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Problema con envio archivos por winsock
« Respuesta #2 en: 15 Octubre 2011, 06:59 am »


Te recomiendo hacer una rutina en donde esperes a que se conecte para luego seguir ejecutando código. Ej:


eventos Connect de winsock...

Dulces Lunas!¡.
En línea

The Dark Shadow is my passion.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema transferencia de archivos con winsock
Programación Visual Basic
BeRti 8 3,349 Último mensaje 17 Abril 2006, 20:10 pm
por Ironhorse
ayuda con el Winsock y envio de contactos
Programación Visual Basic
Sai-To 4 1,666 Último mensaje 22 Abril 2008, 19:48 pm
por Sai-To
Envio de archivos por winsock
Programación Visual Basic
aum 3 1,753 Último mensaje 21 Junio 2008, 16:21 pm
por aum
Ayuda creacion de apliacion, envio de archivos atravez de winsock
Programación Visual Basic
sircam666 1 1,774 Último mensaje 15 Julio 2009, 06:47 am
por BlackZeroX
[Consulta] Winsock, envío de binarios.
Programación C/C++
lBoreal 2 1,777 Último mensaje 5 Abril 2017, 04:23 am
por jvm1994
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines