Page 1 sur 1
ReceiveHTTPMemory et les Packets?
Publié : mer. 28/oct./2020 23:48
par Ekim
Bonsoir à tous
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

Re: ReceiveHTTPMemory et les Packets?
Publié : jeu. 29/oct./2020 10:06
par falsam
Tu utilises transpac (
réseau X.25) pour charger tes données ?

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
Re: ReceiveHTTPMemory et les Packets?
Publié : jeu. 29/oct./2020 10:06
par falsam
Tu utilises transpac (
réseau X.25) pour charger tes données ?

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
https://www.purebasic.fr/english/viewto ... 64#p526164
Re: ReceiveHTTPMemory et les Packets?
Publié : ven. 30/oct./2020 21:35
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?
Re: ReceiveHTTPMemory et les Packets?
Publié : dim. 08/nov./2020 14:38
par Ekim
Est il possible de récupérer les informations contenu dans un datagramme ip ?
Re: ReceiveHTTPMemory et les Packets?
Publié : mar. 12/janv./2021 18:36
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)