Tiempo de espera

Iniciado por Kizar, 16 Octubre 2005, 16:21 PM

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

Kizar

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

NYlOn

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 !

Kizar

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

yeikos

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.