Hola, estoy acabando un programa para el envio de archivos y cada vez que envia una parte de archivo espera a que el servidor lo haya recibido para que manda la segunda.
Este es el codigo que he hecho para que espere:
Sub Spera()
Dim snTime As Integer
snTime = Timer
While Response = True
DoEvents
If Timer - snTime > 5 Then
MsgBox "Tiempo agotado"
Agotado = True
Exit Sub
End If
Wend
End Sub
Este codigo lee el archivo, y lo manda por trozos esperando en cada trozo.
Dim Buffer as string * 1024
Do While Not EOF(1) 'mientras no lleguemos al final
If Agotado = True Then Exit Sub ' si se acaba el tiempo salir
Get #1, , Buffer
Form_archivos.Winsock_file.SendData Buffer
DoEvents
Response = False
Call Spera
Loop 'hasta k terminemos
Este codigo en el server envia NEXT para que envie la siguiente parte:
Private Sub Winsock_file_DataArrival(ByVal bytesTotal As Long)
Dim datos As String
Winsock_file.GetData datos
Put #1, , datos
DoEvents
Winsock_server.SendData "NEXT" 'cuando tiene que enviar esto no lo hace bien, no se si lo manda o no lo manda, creo k no
End Sub
en el data arribal del cliente compruebla si a llegado y tiene k mandar la siguiente
Private Sub Winsock_menu_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim mensaje As String
Winsock_menu(Selecion).GetData mensaje
if mensaje = "NEXT" then
Response = True
end if
end sub
Alguien podria provar el code y decir donde da error, a mi no me da ningun error, pero no hace lo k tendria k acer, creo k el server no manda el NEXT y el cliente no espera, lo manda todo seguido...No se
Ayuda please
Salu2
PD: Polux, me gustaria k le echaras una ojeada a este post si no es mucha molestia ;)
http://foro.elhacker.net/index.php/topic,90656.0.html
La funcion Spera no me funciona :S Me da error de Overflow en esta linea:
snTime = Timer
Si cambio Dim snTime As Integer por Dim snTime As Long no me tira error, pero no espera nada :S... se supone q tiene q esperar 5 segundos no ??
Aca te dejo una sub q hace una especia de Pausa en el programa:
Sub Espera(Segundos As Single)
Dim ComienzoSeg As Single
Dim FinSeg As Single
ComienzoSeg = Timer
FinSeg = ComienzoSeg + Segundos
Do While FinSeg > Timer
DoEvents
If ComienzoSeg > Timer Then
FinSeg = FinSeg - 24 * 60 * 60
End If
Loop
End Sub
Para mi el problema es ahi (que la sub Spera no funciona)
Un saludo !
yo no quiero k el programa espere x segundos, lo k quiero es k espere a k el cliente le mande una respuesta y si pasan 5 segundos y no ha recibido nada pues k cancele el envio.
Salu2
Dexonline, la función que puso NYlOn es lo que tú necesitas, lo ejecutas con un parámetro de 5 segundos que haga la comprobación de si ha recivido datos y si no pues cancela el envio.