ReceiveHTTPMemory et les Packets?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Ekim
Messages : 215
Inscription : dim. 24/juin/2018 1:20

ReceiveHTTPMemory et les Packets?

Message par Ekim »

Bonsoir à tous :wink:

Une petite question pour les spécialistes du téléchargement via Pb

Par rapport à l'exemple qui figure dans l'aide de PB:

Code : Tout sélectionner

InitNetwork()

  *Buffer = ReceiveHTTPMemory("http://www.purebasic.com/index.php")
  If *Buffer
    Taille = MemorySize(*Buffer)
    Debug "Contenu: " + PeekS(*Buffer, Taille, #PB_UTF8|#PB_ByteLength)
    FreeMemory(*Buffer)
  Else
    Debug "Le téléchargement a échoué"
  EndIf

c'est bien jolie, mais sa n'explique pas comment on peut lire la quantité en octet
des packets qui nous parviennent à chaque cycles :?

bref, j'aurais besoin de vos lumières les Basiciens :idea:
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: ReceiveHTTPMemory et les Packets?

Message par falsam »

Tu utilises transpac (réseau X.25) pour charger tes données ? :mrgreen:

:idea: Exemple de la documentation

Code : Tout sélectionner

 InitNetwork()

  Download = ReceiveHTTPMemory("http://www.purebasic.com/download/OgreAssimpConverter.zip", #PB_HTTP_Asynchronous)
  If Download
    Repeat
      Progress = HTTPProgress(Download)
      Select Progress
        Case #PB_HTTP_Success
          *Buffer = FinishHTTP(Download)
          Debug "Download finished (size: " + MemorySize(*Buffer) + ")"
          FreeMemory(*Buffer)
          End

        Case #PB_HTTP_Failed
          Debug "Download failed"
          FinishHTTP(Download)
          End

        Case #PB_HTTP_Aborted
          Debug "Download aborted"
          FinishHTTP(Download)
          End
          
        Default
          Debug "Current download: " + Progress
       
      EndSelect
      
      Delay(500) ; Don't stole the whole CPU
    ForEver
  Else
    Debug "Download error"
  EndIf
un exemple threadé de mk-soft

Code : Tout sélectionner

If Download
      LastProgress = 0
      Time = 0
      Repeat
        Progress = HTTPProgress(Download)
        Select Progress
          Case #PB_HTTP_Success
            *Buffer = FinishHTTP(Download)
            Logging("Download finished (size: " + MemorySize(*Buffer) + ")")
            image = CatchImage(#PB_Any, *Buffer, MemorySize(*Buffer))
            If image
              AddElement(images())
              images()\image = image
              images()\url = url()
              Logging("Catch Image finished")
            Else
              Logging("Catch Image failed")
            EndIf
            FreeMemory(*Buffer)
            Break
          Case #PB_HTTP_Failed
            Logging("Download failed")
            FinishHTTP(Download)
            Break
          Case #PB_HTTP_Aborted
            Logging("Download aborted")
            FinishHTTP(Download)
            Break
          Default
            If Progress <> LastProgress
              LastProgress = Progress
              Time = 0
              Logging("Current download: " + Progress)
            Else
              Delay(200)
              Time + 200
              If Time > 5000
                Logging("Download timeout")
                AbortHTTP(Download)
              EndIf
            EndIf
        EndSelect
      ForEver
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: ReceiveHTTPMemory et les Packets?

Message par falsam »

Tu utilises transpac (réseau X.25) pour charger tes données ? :mrgreen:

:idea: Exemple de la documentation

Code : Tout sélectionner

 InitNetwork()

  Download = ReceiveHTTPMemory("http://www.purebasic.com/download/OgreAssimpConverter.zip", #PB_HTTP_Asynchronous)
  If Download
    Repeat
      Progress = HTTPProgress(Download)
      Select Progress
        Case #PB_HTTP_Success
          *Buffer = FinishHTTP(Download)
          Debug "Download finished (size: " + MemorySize(*Buffer) + ")"
          FreeMemory(*Buffer)
          End

        Case #PB_HTTP_Failed
          Debug "Download failed"
          FinishHTTP(Download)
          End

        Case #PB_HTTP_Aborted
          Debug "Download aborted"
          FinishHTTP(Download)
          End
          
        Default
          Debug "Current download: " + Progress
       
      EndSelect
      
      Delay(500) ; Don't stole the whole CPU
    ForEver
  Else
    Debug "Download error"
  EndIf
un exemple threadé de mk-soft

Code : Tout sélectionner

If Download
      LastProgress = 0
      Time = 0
      Repeat
        Progress = HTTPProgress(Download)
        Select Progress
          Case #PB_HTTP_Success
            *Buffer = FinishHTTP(Download)
            Logging("Download finished (size: " + MemorySize(*Buffer) + ")")
            image = CatchImage(#PB_Any, *Buffer, MemorySize(*Buffer))
            If image
              AddElement(images())
              images()\image = image
              images()\url = url()
              Logging("Catch Image finished")
            Else
              Logging("Catch Image failed")
            EndIf
            FreeMemory(*Buffer)
            Break
          Case #PB_HTTP_Failed
            Logging("Download failed")
            FinishHTTP(Download)
            Break
          Case #PB_HTTP_Aborted
            Logging("Download aborted")
            FinishHTTP(Download)
            Break
          Default
            If Progress <> LastProgress
              LastProgress = Progress
              Time = 0
              Logging("Current download: " + Progress)
            Else
              Delay(200)
              Time + 200
              If Time > 5000
                Logging("Download timeout")
                AbortHTTP(Download)
              EndIf
            EndIf
        EndSelect
      ForEver
:arrow: https://www.purebasic.fr/english/viewto ... 64#p526164
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Ekim
Messages : 215
Inscription : dim. 24/juin/2018 1:20

Re: ReceiveHTTPMemory et les Packets?

Message par Ekim »

Ok merci c'est cool @falsam
cette fois j'ai complètement compris le principe

Par contre, pour le 2eme exemple (mk-soft), j'ai remarqué que parfois le temps de chargement
varie pour un même fichier mais je pense que cela dépend de la qualité de la connexion
pas vrai?

une autre petit question, le delay de 200 est il vraiment nécessaire?
Ekim
Messages : 215
Inscription : dim. 24/juin/2018 1:20

Re: ReceiveHTTPMemory et les Packets?

Message par Ekim »

Est il possible de récupérer les informations contenu dans un datagramme ip ?
Avatar de l’utilisateur
Naheulf
Messages : 191
Inscription : dim. 10/mars/2013 22:22
Localisation : France

Re: ReceiveHTTPMemory et les Packets?

Message par Naheulf »

Oui mais pas directement avec PureBasic. Si c'est pour faire une analyse de ces trames comme avec wireshark, il te faudra utiliser Npcap (comme le fait wireshark)

PureBasic se "contente" d'utiliser la couche transport (ce qui est suffisant pour 99% des applications) alors que tu veut interagir avec la couche du dessous. (Voir https://fr.wikipedia.org/wiki/Modèle_OSI)
Répondre