[c#] lire plusieurs lignes sur une socket ?

lire plusieurs lignes sur une socket ? [c#] - C#/.NET managed - Programmation

Marsh Posté le 08-02-2005 à 16:07:29    

'jour :)
je suis en train de faire une classe en c# qui me permette d'envoyer des mails en attaquant directement le serveur dhcpsmtp [:ddr555].
pour l'instant tout fonctionne bien, il y a juste une petite chose que je n'arrive pas bien a saisir.
 

fred@atlantis:~$ telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 atlantis ESMTP Exim 3.35 #1 Tue, 08 Feb 2005 15:48:31 +0100
EHLO toto
250-atlantis Hello atlantis [127.0.0.1]
250-SIZE
250-PIPELINING
250 HELP
MAIL FROM: <toto@toto.fr>
250 <toto@toto.fr> is syntactically correct
RCPT TO: <moi@free.fr>
250 <moi@free.fr> verified


 
Quand je fais mes commandes "a la main", lors du EHLO sont renvoyees un certain nombre de ligne, nombre variable.
La question, c'est : en c#, je fais comment pour lire toutes ces lignes et detecter la fin de l'envoi de la part du serveur ?
Pour l'instant, j'ai ca :

Code :
  1. private bool sendstring(string toBeSend, bool waitResult, string codeAttendu)
  2. {
  3.   string s="";
  4.     try
  5.     {
  6.       Console.WriteLine(">>"+toBeSend);
  7.       sw.WriteLine(toBeSend);
  8.       sw.Flush();
  9.       if(waitResult)
  10.       {
  11.         s=sr.ReadLine();
  12.         Console.WriteLine("<<"+s);
  13.       }
  14.     }
  15.   catch(Exception ee)
  16.   {
  17.     Console.WriteLine("exception lecture/écriture!" );
  18.   }
  19.   if(waitResult)
  20.     return(getFirstPart(s)==codeAttendu);
  21.   return(true);
  22. }


Je fais juste un ReadLine() sur mon streamreader, mais comment je peux faire pour tout lire et m'arreter ensuite ? J'ai essaye avec sr.Peek(), mais ca ne marche pas :/
Une idee ?
Merci :hello:


Message édité par freds45 le 08-02-2005 à 22:48:07
Reply

Marsh Posté le 08-02-2005 à 16:07:29   

Reply

Marsh Posté le 08-02-2005 à 18:32:40    

Reply

Marsh Posté le 08-02-2005 à 22:07:35    

Reply

Marsh Posté le 08-02-2005 à 22:45:25    

Tout d'abord tu trouveras la réponse concernant la fin de l'envoi dans le rfc 821 qui est la référence correspondant le protocole SMTP (et non pas DHCP !).
 

RFC-821 :

The reply text may be longer than a single line; in these cases the complete text must be marked so the sender-SMTP knows when it can stop reading the reply.  This requires a special format to indicate a multiple line reply.
 
The format for multiline replies requires that every line, except the last, begin with the reply code, followed immediately by a hyphen, "-" (also known as minus), followed by text.  The last line will begin with the reply code, followed immediately by <SP>, optionally some text, and <CRLF>.


 
Par contre concernant la possibilité de lire plusieurs lignes je ne peut pas t'aider... mais pourquoi pas faire plusieurs 'ReadLine' ?
 
edit: correction du tag citation


Message édité par gatorette le 08-02-2005 à 22:46:57

---------------
each day I don't die is cheating
Reply

Marsh Posté le 08-02-2005 à 22:46:02    

Lit plusieurs ligne en appelant ReadLine plusieurs fois. Logiquement (jamais testé) ça va finir par retourner une erreur ou lever une exception (voit la doc)...

Reply

Marsh Posté le 08-02-2005 à 22:51:53    

gatorette a écrit :

Tout d'abord tu trouveras la réponse concernant la fin de l'envoi dans le rfc 821 qui est la référence correspondant le protocole SMTP (et non pas DHCP !).
 
 
 
Par contre concernant la possibilité de lire plusieurs lignes je ne peut pas t'aider... mais pourquoi pas faire plusieurs 'ReadLine' ?
 
edit: correction du tag citation


 
ah oui exact, j'avais même pas fait attention :D
merci!!!!! :love:


Message édité par freds45 le 08-02-2005 à 22:54:04
Reply

Marsh Posté le 08-02-2005 à 22:53:01    

pascal_ a écrit :

Lit plusieurs ligne en appelant ReadLine plusieurs fois. Logiquement (jamais testé) ça va finir par retourner une erreur ou lever une exception (voit la doc)...


 
j'avais essayé, mais ca bloque, ca n'evolue pas.
il attend qquechose sur la socket, et ya rien qui vient :/
enfin avec la solution proposée au dessus, ca va aller :sol: !


Message édité par freds45 le 08-02-2005 à 22:53:20
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed