2010-12-11 46 views
0

Je tente de développer un serveur SMTP simple, le problème est lorsque j'essaie de lire le message du réseau tous les messages sont une chaîne avec beaucoup de "/ 0" au lieu de commande tapée. J'utilise telnet pour me connecter à mon application et pour taper des messages.Lire à partir du réseau problème .NET

ceci est mon code:

public void StartListen() 
     { 
      SMTPParser parser = new SMTPParser(); 
      SMTPResponder responder = new SMTPResponder(); 
      Listening = true; 

      IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 25); 
      TcpListener listener = new TcpListener(endPoint); 
      listener.Start(); 


      while(Listening) 
      {    
       byte[] data = new byte[2048];    
       Socket socket = listener.AcceptSocket();     
       socket.Receive(data); 

       string cmd = Encoding.ASCII.GetString(data); 

       if(cmd !="") parser.Parse(cmd, responder); 
      } 
     } 

Répondre

1

Socket.Receive renvoie le nombre d'octets de lecture. Actuellement, vous obtenez toujours une chaîne à partir des 2048 octets du tampon, même si seulement quelques octets sont lus. Change to:

int length = socket.Receive(data); 
string cmd = Encoding.ASCII.GetString(data, 0, length); 
+0

cela a aidé, merci beaucoup – Maki