acces newsgroup

Programmation d'applications complexes
supercdfr
Messages : 105
Inscription : sam. 21/juil./2007 15:16

acces newsgroup

Message par supercdfr »

Bonjour,

j'essaie de voir s'il est possible de créer un programme pour l'acces aux newgroup, mais il y a bien peut d'informations.
J'ai essayé un petit bout de programme, pour essayer dans un premier temps de recuperer la liste des forums disponibles sur 1 serveur, mais a chaque fois que je lance le programme, le nombre de forum disponibles est totalement different.

Code : Tout sélectionner

liste.s = ""

Buffer.d = AllocateMemory(10000000)
If InitNetwork() = 0
  MessageRequester("Error", "impossible d'initialiser le reseau", 0)
  End
EndIf

usenet_provider.s   = "" ; votre fournisseur usenet ici
login.s=""
password.s=""
Port.l = 119

ConnectionID = OpenNetworkConnection(usenet_provider, Port)
If ConnectionID 
  Debug "connexion"
  a.s = PeekS(Buffer.d,ReceiveNetworkData(ConnectionID, Buffer.d , 10000000)) 

  SendNetworkString(ConnectionID, "AUTHINFO USER "+login+Chr(13)+Chr(10)) 
  ab.d= ReceiveNetworkData(ConnectionID, Buffer.d , 10000000)
  b.s = PeekS(Buffer.d,ab.d)   
  code_erreur.s = (StringField(b.s, 1, " ") )
;  Debug code_erreur.s
 
  SendNetworkString(ConnectionID, "AUTHINFO PASS "+password+Chr(13)+Chr(10))
  ab.d= ReceiveNetworkData(ConnectionID, Buffer.d , 10000000)
  b.s = PeekS(Buffer.d,ab.d)   
  code_erreur = (StringField(b.s, 1, " ") )
;  Debug code_erreur.s
;Debug "******************"
 
 
 
  ; liste des newsgroup disponibles
   SendNetworkString(ConnectionID, "LIST"+Chr(13)+Chr(10))
   ab.d= ReceiveNetworkData(ConnectionID, Buffer.d  , 10000000)
   b.s = PeekS(Buffer.d ,ab.d) 
   nbr_ligne = CountString( b.s, Chr(13)) 
   Debug "nombre ligne : " + Str(nbr_ligne)
   For i=1 To nbr_ligne
    liste = (StringField(b.s, i, Chr(13)) ):liste$=Mid(liste$,2,Len(liste$))
   Debug liste
   Next i 
   Debug "******************"
 
EndIf
Si quelqu'un a une idée, je suis preneur.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: acces newsgroup

Message par Backup »

recherche sur le forum avec le terme "nntp" tu devrai trouver ton bonheur

pour info j'ai fait une librairie nntp, mais je l'ai retiré de mon telechargement

et je sais plus pourquoi :mrgreen: :lol:
supercdfr
Messages : 105
Inscription : sam. 21/juil./2007 15:16

Re: acces newsgroup

Message par supercdfr »

malheureusement, je ne trouve aucun lien utile. :oops:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: acces newsgroup

Message par Backup »

je viens de remettre ma lib en telechargement
http://michel.dobro.free.fr/download.php?view.19

j'ai testé chez moi ça marche :)

par contre ,i peut y avoir quelques problemes avec certaines compression d'images
seul le UUencode est pris en compte

pas le Yenc
(http://fr.wikipedia.org/wiki/YEnc )

faudra le faire ..
supercdfr
Messages : 105
Inscription : sam. 21/juil./2007 15:16

Re: acces newsgroup

Message par supercdfr »

Merci, je vais tester ca.
supercdfr
Messages : 105
Inscription : sam. 21/juil./2007 15:16

Re: acces newsgroup

Message par supercdfr »

Malheureusement, le fichier fait 0 Ko quand je le charge.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: acces newsgroup

Message par Backup »

c'est Free qui devait etre en maintenance

réessaye ;)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: acces newsgroup

Message par Backup »

pour les fichiers Yenc (la majorité des images actuelles)

il existe apparemment, un prg qui permet de decoder le yenc en mode commandline

http://www.yenc.org/ydec.htm

je testerai ça, quand j'aurai un moment , et si ça marche, j'incluerai ce prg
dans ma lib :)

vais pas réinventer la roue :lol:

[Reedit]
je viens de trouver ce code sur le forum anglais

Code : Tout sélectionner

; yEncode / yDecode for use in encoding binaries for file storage
; for PB4.30
; Written by Harold Koenig
; Adapted from some VB6 code I found that was posted at the below URL;
;   http://www.vbforums.com/showthread.php?t=379143
; This does not adhere to the yEnc spec, as it does not accomodate line length'
;  or anything else. All this does is make sure there are no special characters
;  in the output string. This was adapted to store binary data in databases using
;  the native PB database interface.
;
; For Large files it makes sense to read and write in blocks as memory
;  use becomes problematical

EnableExplicit

Procedure.s yEncode(*encMemoryID.l)
  Define *OutBuffer.l
  Define InputSize.l
  Define Char.l
  Define Test.c
  Define StringPos.l
  Define OutString.s
 
  InputSize=MemorySize(*encMemoryID)
  ;allowing for a string twice as long as the input.
  ; this should allow for worst case where everything
  ; is a special character
  *OutBuffer=AllocateMemory(InputSize*2)
 
  For Char=0 To InputSize
    Test=PeekC(*encMemoryID+Char)
    Test=(Test+42)%256
    Select Test
      Case 0,13,10,61
        ;input was a special charcter
        PokeC(*OutBuffer+StringPos,61)
        StringPos=StringPos+1
        PokeC(*OutBuffer+StringPos,(Test+64)%256)
        StringPos=StringPos+1
      Default
        PokeC(*OutBuffer+StringPos,Test)
        Stringpos=StringPos+1
    EndSelect
  Next Char
  OutString=PeekS(*OutBuffer,StringPos-1)
  FreeMemory(*OutBuffer)
  ProcedureReturn OutString
EndProcedure

Procedure.l yDecode(InputString.s)
  Define *decMemoryID.l
  Define Char.l
  Define InputSize.l
  Define Test.c
  Define MemPos.l
 
  InputSize=Len(InputString)
  ;allocate at least as much memory as the input string
  ; this will shrink later
  *decMemoryID=AllocateMemory(InputSize)
 
  For Char=0 To InputSize
    Test=PeekC(@InputString+Char)
    If Test <> 61
      Test=((Test+256)-42)%256
      Else
      Char=Char+1
      Test=PeekC(@InputString+Char)
      Test=((Test+256)-64)%256
      Test=((Test+256)-42)%256
    EndIf
    PokeC(*decMemoryID+MemPos,Test)
    MemPos=MemPos+1
  Next Char
  ;shrink memory to appropriate size
  *decMemoryID=ReAllocateMemory(*decMemoryID,MemPos-1)

  ProcedureReturn *decMemoryID
EndProcedure

; -----------------------------------------------------
;  this section is just to test the above procedures
; -----------------------------------------------------
;PB 4.3 install file was 14,987,720 bytes
#SourceDataFile="C:\Program Files\PureBasic\Projects\yEnc\PureBasic_4_30_x86_(tnpzex).exe"
#DestTextFile="C:\Program Files\PureBasic\Projects\yEnc\yEnc.txt"
#DestDataFile="C:\Program Files\PureBasic\Projects\yEnc\yDec.bin"

Define FileLen.l
Define *FileBuffer.l
Define yEncString.s
Define StartTime.l
Define StringLen.l

StartTime=ElapsedMilliseconds()

ReadFile(0,#SourceDataFile)
  FileLen=Lof(0)
  Debug "Input file is " + Str(Filelen) + " bytes long"
  *FileBuffer=AllocateMemory(FileLen)
  ReadData(0,*FileBuffer,FileLen)
CloseFile(0)

yEncString=yEncode(*FileBuffer)
StringLen=Len(yEncString)
Debug "Encoded string is " + Str(StringLen) + " bytes long"
Debug " - An increase of " + StrF(((StringLen-FileLen)/FileLen)*100,2) + "%"
Debug ""
FreeMemory(*FileBuffer)

*FileBuffer=yDecode(yEncString)
yEncString=""

CreateFile(0,#DestDataFile)
  WriteData(0,*FileBuffer,MemorySize(*FileBuffer))
CloseFile(0)

StartTime=(ElapsedMilliseconds()-StartTime)
Debug StrF(StartTime/1000,3) + " seconds to encode and decode file"
End
[/Reedit]
supercdfr
Messages : 105
Inscription : sam. 21/juil./2007 15:16

Re: acces newsgroup

Message par supercdfr »

Je me casse les dents sur la recuperation des entete.
Voici un bout de code pour recuperer les en tetes :

Code : Tout sélectionner

premier_article.s = "1170000"
CreateFile(#fichier,"headers.txt")
For i.l = Val(premier_article)  To Val(premier_article) + 3
  Buffer = AllocateMemory(200000)
  SendNetworkString(ConnectionID, "HEAD " + Str(i) + retour_chariot)
  ReceiveNetworkData(ConnectionID, Buffer , 200000)
  b.s = PeekS(Buffer,-1,#PB_Ascii )
  If StringField(b, 1, " ") = "480"
    Goto finnext
  EndIf
  FreeMemory(buffer)
  WriteString(#fichier, b)
  WriteString(#fichier,"*********************")
  If FindString(b,"Subject: ",0)
    Debut.l = FindString(b,"Subject: ",0) +9
    fin.l = FindString(b,Chr(13) + Chr(10), FindString(b,"Subject: ",0))
    Debug Mid(b, debut , fin-debut)
  EndIf
;  Debug Str(i)
  finnext:
Next i
CloseFile(#fichier)

Debug "//////////////////"
For i.l = Val(premier_article)  To Val(premier_article) + 3
  buffer = 0
  Buffer = AllocateMemory(200000)
  SendNetworkString(ConnectionID, "ARTICLE " + Str(i) + retour_chariot)
  ReceiveNetworkData(ConnectionID, Buffer , 200000)
  b = PeekS(Buffer,-1,#PB_Ascii )
  If StringField(b, 1, " ") = "480"
    Goto finnext2
  EndIf
  FreeMemory(buffer)
  CreateFile(#fichier,Str(i)+".txt")
  WriteString(#fichier, b)
  If FindString(b,"Subject: ",0)
    Debut.l = FindString(b,"Subject: ",0) +9
    fin.l = FindString(b,Chr(13) + Chr(10), FindString(b,"Subject: ",0))
    Debug Mid(b, debut , fin-debut)
  EndIf
;  Debug Str(i)
  finnext2:
  CloseFile(#fichier)
Next i
Il va s'en dire que la connexion au newgroup est OK et fonctionnelle, j'arrive a recuperer la liste de tous les newsgroups disponible.
Le soucis, c'est que la récupération des HEADER se passe bien (du moins apparemment), mais quand je fait la récupération des articles (avec le même numéro d'article), je récupère totalement autre chose.
J'ai essayé de mettre des [ et ] pour le numéro d'article, mais ca ne change rien.
Et il arrive frequement qu'en lançant le HEADER 2 fois de suite, je n'obtienne pas les mêmes fichiers.
Et si j'inverse les 2, je n'est plus rien du tout.
Franchement, je comprends plus du tout comment ca fonctionne.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: acces newsgroup

Message par Backup »

pour recuperer le nombre de nouveaux messages
l'indice du message de debut
l'indice du message de fin

faut faire :

Code : Tout sélectionner

ProcedureDLL.L nntp_get_info(nom_group$,type) 
  SendNetworkString(ConnectionID, "GROUP "+nom_group$+envoi$)  
  ab.d= ReceiveNetworkData(ConnectionID, Buffer.d , 500000) 
  b.s = PeekS(Buffer.d,ab.d)      
  code_erreur=Val( (StringField(b.s, 1, " ") ))
  nbr_article=Val((StringField(b.s, 2, " ") ))
  premier_art=Val( (StringField(b.s, 3, " ") ))
  dernier_art=Val( (StringField(b.s, 4, " ") ))
  Select type
    Case 1
      ProcedureReturn code_erreur
    Case 2
      ProcedureReturn nbr_article
    Case 3
      ProcedureReturn premier_art
    Case 4
      ProcedureReturn dernier_art
  EndSelect 
EndProcedure

ainsi si tu fait :

Code : Tout sélectionner

code_erreur=nntp_get_info(nom_group$,1) ; recupe le code de retour
nbr_article=nntp_get_info(nom_group$,2) ; recupe le nombre de nouveau articles
Premier_article=nntp_get_info(nom_group$,3)  ; recupe l'indice du premier article
dernier_article=nntp_get_info(nom_group$,4) ; recupe l'indice dudernier article referencé par le serveur
;)


je suis en train de revoir ma lib

j'ai fait un petit lecteur de news (lecteur d'image)
ça marche tres bien sur une news (affichage complet des images)
mais lorsque je change de news (un autre Alt.binaries.picture) , je suis confronté
a un probleme

ma lib renvoi bien les bon indices debut et fin de message , ainsi que le nombre de message
(procedure ci dessus)
mais pour une raison que j'ignore, le premier article lisible, n'est pas le premier article indiqué
dans la new !!

j'ai vérifié avec un lecteur de news, effectivement, il affiche le même debut-fin que moi
mais, leur articles commencent a des numeros differents, des indices debut-fin indiqué

par contre mon lecteur de news, si je lui précise un article particulier, il correspond
au lecteur de news !! ; bizarre

il existe très peu de doc , sur tout ça :?

du reste , je ne sais pas si je vais donner le source de mon lecteur de news (qui utilise ma lib)
car ce genre de prg , devrait etre limite interdit au moins de 18 ans :roll:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: acces newsgroup

Message par Backup »

Dobro a écrit :
j'ai vérifié avec un lecteur de news, effectivement, il affiche le même debut-fin que moi
mais, leur articles commencent a des numeros differents, des indices debut-fin indiqué

c'est bon j'ai compris ce point !

c'est parcequ'il faut demander la liste des message Valable
(commande "LISTGROUP") , ça me fait une fonction de plus dans ma lib

j'ai adapté a mon lecteur de news (lecteur d'images Chaudasse) :lol:

ça a l'air de tourner , je suis en phase de test avant publication (surement dans mon forum d'ailleurs, a cause de la cible du programme ;) ) , mais ça fatigue les tests :lol: forcement avec des images pareilles , je code d'une seule main !! :lol: :lol: :lol: :lol:
supercdfr
Messages : 105
Inscription : sam. 21/juil./2007 15:16

Re: acces newsgroup

Message par supercdfr »

Le LSITGROUP n'aide pas.

Voila la totalité du programme

Code : Tout sélectionner

Enumeration
  #fichier
EndEnumeration

; ============CHANGE HERE ===================
;usenet_provider.s   = "news.readfreenews.net"
;login.s=""
;password.s=""
usenet_provider.s   = "europe.newsdemon.com"
login.s=""
password.s=""
Port.l = 119
; ============CHANGE HERE ===================


Global ConnectionID.l = 0
Global retour_chariot.s=Chr(13)+Chr(10)
Global nombre_groupes.l = 0
Global Dim nom_groupe.s(500000)
Global Dim index_article_1.l(500000)
Global Dim index_article_fin.l(500000)


Global liste.s = ""
Global Dim code_erreur.s(1000)

Global *Buffer.d 

code_erreur(281) = "Authentication succeeded"
code_erreur(480) = "Authentication required"
code_erreur(500) = "Command Not understood"
code_erreur(501) = "Command Not supported"
code_erreur(502) = "No permission"
code_erreur(503) = "Program error, function Not performed"
code_erreur(381) = "More authentication information required"
code_erreur(482) = "Authentication rejected"

Procedure charge_liste_des_groupes()
  demarre.d = 0
  CreateFile(#fichier,"g:\download\test.txt")
  SendNetworkString(ConnectionID, "LIST"+retour_chariot)
  compte.l = 0
  retour1:
  *Buffer = AllocateMemory(10000)
  *Buffer_charger.s = PeekS(*Buffer ,ReceiveNetworkData(ConnectionID, *Buffer , 10000))
  nbr_ligne = CountString( *Buffer_charger, Chr(13)) 
  code_retour.s = (StringField(*Buffer_charger, 1, " ") )
  For i=1 To nbr_ligne
    If demarre = 0
      demarre = 1
      Goto suite_charge_liste
    EndIf
    liste = (StringField(*Buffer_charger, i, Chr(13)) )
    liste$= Mid(liste,2,Len(liste))
    If FindString(liste,Chr(10) + Chr(46),0)
      CloseFile(#fichier)
      ProcedureReturn compte
    EndIf
    WriteString(#fichier,liste)
    nom_groupe(compte) = StringField(liste,1," ")
    index_article_fin(compte) = Val(StringField(liste,2," "))
    index_article_1(compte) = Val(StringField(liste,3," "))
    compte + 1
    suite_charge_liste:
  Next i 
  FreeMemory(*Buffer)
  Goto retour1
 EndProcedure
 
Procedure liste_contenu_group()
  nom_group.s="fr.comp.sys.atari "
  SendNetworkString(ConnectionID, "GROUP " + nom_group + retour_chariot)
;  ab.d= ReceiveNetworkData(ConnectionID, *Buffer.d , 100000)
  b.s = PeekS(*Buffer,ReceiveNetworkData(ConnectionID, *Buffer.d , 100000)) 
 
 
  code_erreur$ = (StringField(b.s, 1, " ") )
  nbr_article$ = (StringField(b.s, 2, " ") )
  premier_art$ = (StringField(b.s, 3, " ") )
  dernier_art$ = (StringField(b.s, 4, " ") )
 
;  Debug  nom_group
;  Debug "code erreur "+code_erreur$ ; si 211 tout vas bien sinon erreur si code =
;  Debug "nombre d'article dans le groupe "+ nbr_article$
  Debug "index du premier article "+premier_art$
  Debug "index du dernier article "+dernier_art$
  
EndProcedure
 
If InitNetwork() = 0
  MessageRequester("Error", "impossible d'initialiser le reseau", 0)
  End
EndIf

ConnectionID = OpenNetworkConnection(usenet_provider, Port)
If ConnectionID 
  ;;;;;;;;;;;;;;;;;;;;
  ; AUTHENTIFICATION ;
  ;;;;;;;;;;;;;;;;;;;;
  
  *Buffer = AllocateMemory(10000000)
  PeekS(*Buffer,ReceiveNetworkData(ConnectionID, *Buffer , 10000000)) 
  SendNetworkString(ConnectionID, "AUTHINFO USER "+login+retour_chariot) 
  FreeMemory(*Buffer)
  *Buffer = AllocateMemory(10000000)
  ab.d= ReceiveNetworkData(ConnectionID, *Buffer , 10000000)
  b.s = PeekS(*Buffer,ab)   
  code_retour.s = (StringField(b, 1, " ") )
  SendNetworkString(ConnectionID, "AUTHINFO PASS "+password+retour_chariot)
  FreeMemory(*Buffer)
  *Buffer = AllocateMemory(10000000)
  ab = ReceiveNetworkData(ConnectionID, *Buffer , 10000000)
  b = PeekS(*Buffer,ab)   
  code_retour = (StringField(b, 1, " ") )
  If Val(code_retour) <> 281
    CloseNetworkConnection(ConnectionID)
    MessageRequester("Desolé","l'authentification a échouée : " + Chr(10) + Chr(13) + code_erreur(Val(code_retour)))
    End
  EndIf
  FreeMemory(*Buffer)

  nom_group.s="alt.binaries.games.dox "
  SendNetworkString(ConnectionID, "GROUP " + nom_group + retour_chariot)
  
  *Buffer = AllocateMemory(100000)
  b = PeekS(*Buffer,ReceiveNetworkData(ConnectionID, *Buffer.d , 100000)) 
;  Debug b
  code_erreur.s = (StringField(b.s, 1, " ") )
  nbr_article.s = (StringField(b.s, 2, " ") )
  premier_art.s = (StringField(b.s, 3, " ") )
  dernier_art.s = (StringField(b.s, 4, " ") )
  Debug "index du premier article "+ premier_art
  Debug "index du dernier article "+dernier_art
  FreeMemory(*Buffer)
  corp=0
  
  premier_art = "1170000"
  Debug "''''''''''''''''''''"
  *Buffer = AllocateMemory(200000)
  
  CreateFile(#fichier,"g:\download\headers.txt")
  For i.l = Val(premier_art)  To Val(premier_art) + 3
    SendNetworkString(ConnectionID, "HEAD " + Str(i) + retour_chariot)
    ReceiveNetworkData(ConnectionID, *Buffer , 20000)
    b.s = PeekS(*Buffer,-1,#PB_Ascii )
    code_erreur = (StringField(b.s, 3, " ") )
  ;  Debug code_erreur
  ;  Debug b
  ;  FreeMemory(*Buffer)
    If StringField(b, 1, " ") = "430"
      Goto finnext
    EndIf
    WriteString(#fichier, b)
    WriteString(#fichier,"*********************")
    If FindString(b,"Subject: ",0)
      Debut.l = FindString(b,"Subject: ",0) +9
      fin.l = FindString(b,Chr(13) + Chr(10), FindString(b,"Subject: ",0))
      Debug Mid(b, debut , fin-debut)
    EndIf
  ;  Debug Str(i)
    finnext:
  Next i
  CloseFile(#fichier)
  
  Debug "*******************************"
  CreateFile(#fichier,"g:\download\headers2.txt")
  For i.l = Val(premier_art)  To Val(premier_art) + 3
    SendNetworkString(ConnectionID, "HEAD " + Str(i) + retour_chariot)
    ReceiveNetworkData(ConnectionID, *Buffer , 20000)
    b.s = PeekS(*Buffer,-1,#PB_Ascii )
    code_erreur = (StringField(b.s, 3, " ") )
  ;  Debug code_erreur
  ;  Debug b
  ;  FreeMemory(*Buffer)
    If StringField(b, 1, " ") = "430"
      Goto finnext2
    EndIf
    WriteString(#fichier, b)
    WriteString(#fichier,"*********************")
    If FindString(b,"Subject: ",0)
      Debut.l = FindString(b,"Subject: ",0) +9
      fin.l = FindString(b,Chr(13) + Chr(10), FindString(b,"Subject: ",0))
      Debug Mid(b, debut , fin-debut)
    EndIf
  ;  Debug Str(i)
    finnext2:
  Next i
  CloseFile(#fichier)

EndIf
La derniere portion de code charge les HEADER du message N° 1170000 et les 3 suivants.
J'ai dupliquer le chargement des HEADER pour voir, et il ne sort pas la meme chose, alors que le code est 100% identique.
Je seche totalement depuis 2 jours, et je ne trouve aucune aide sur aucun forum.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: acces newsgroup

Message par Ar-S »

J'avoue ne m'être jamais intéressé aux newsgroups... J'observe de loin ce "fil" mais je peux pas bien faire plus.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: acces newsgroup

Message par Backup »

supercdfr a écrit :Le LSITGROUP n'aide pas.
ben voyons :roll:
(pour info mon lecteur d'images nntp fonctionne nicquel ;) )

il me semble que tu ne comprends peut etre pas la philosophie du bazard :lol:
je m'explique

tu te connecte au nntp
ensuite tu commence par demander la liste des messages du groupe que tu as choisi !

pour un groupe choisi (alt.binaries.******) , tu récupère la liste des messages Valable
en utilisant la commande LISTGROUP nom_du group
ça va te renvoyer une liste (séparé par des chr(13)) de numéros ..

ce sont des numeros d'indice de message, qui sont ACTIF

c'est bien EUX et EUX seuls qui comptent !!

tu te servira de cette liste pour passer du premier au dernier message ACTIF
ces numeros ne sont pas forcement contiguës !!!
d'ou l'interet d'utiliser un tableau ou une list chainée


la fonction qui te renvoie le premier et le dernier messages, ne sont que purement informatif ;)

une fois que tu as ta liste de massages Valable
tu peux faire apparaitre n'importe lequel de ses messages
en utilisant la commande
ARTICLE numero_article

cette commande va te retourner ton article COMPLET !! (entete et corps compris)

apres si ça t'amuse tu peux faire appel au fonctions HEAD ou BODY
pour permettent d'isoler l'en-tête ou le corps du message
ou le faire en tapant direct dans le message !

mais ce sont des flioritures (comme pour les numeros du Premier/dernier articles)!!


je continue de peaufiner ma librairie, en tout cas je peux maintenantt afficher des images tres heu.... comment dire ça .... hum... :oops: :oops: bon a +++ :lol:


ps: tres bon site sur le sujet ici :
http://www.mibsoftware.com/userkt/nntp/0017.htm
supercdfr
Messages : 105
Inscription : sam. 21/juil./2007 15:16

Re: acces newsgroup

Message par supercdfr »

Le probleme, c'est que la liste que l'obtient avec LISTGROUP contient les mêmes n° de messages que j'essaye de tester.

Et dans tous les cas, je n'obtient pas la même donnée quand je lance le programme.
Quand je charge a partir de l'article 1170000 et que je sort le fichier avec les données brutes qu'il reçoit, au lieu d'avoir 1170000 - 1170001 - 1170002 - 1170003, j'obtiens 1170002 - 1170003 - 1170000 - 1170000.

Et si j'essaye avec l'adresse ygdzedz@fezfzf.fr contenu dans l'article, il me sort encore autre chose.

Je ne comprends absolument pas comment il peut me sortir autant de données aussi différentes.
Répondre