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
Message
par Ekim » mer. 28/oct./2020 23:48
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
falsam
Messages : 7244 Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :
Message
par falsam » jeu. 29/oct./2020 10:06
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
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%
falsam
Messages : 7244 Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :
Message
par falsam » jeu. 29/oct./2020 10:06
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
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
Message
par Ekim » ven. 30/oct./2020 21:35
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
Message
par Ekim » dim. 08/nov./2020 14:38
Est il possible de récupérer les informations contenu dans un datagramme ip ?
Naheulf
Messages : 191 Inscription : dim. 10/mars/2013 22:22
Localisation : France
Message
par Naheulf » mar. 12/janv./2021 18:36
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 )