Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Kizar en 16 Octubre 2005, 16:21 pm



Título: Tiempo de espera
Publicado por: Kizar en 16 Octubre 2005, 16:21 pm
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:

Código:
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.

Código:
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:

Código:
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

Código:
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


Título: Re: Tiempo de espera
Publicado por: NYlOn en 16 Octubre 2005, 19:06 pm
La funcion Spera no me funciona :S Me da error de Overflow en esta linea:
Código:
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:

Código:
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 !


Título: Re: Tiempo de espera
Publicado por: Kizar en 16 Octubre 2005, 19:39 pm
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


Título: Re: Tiempo de espera
Publicado por: yeikos en 16 Octubre 2005, 20:36 pm
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.