2010-12-11 19 views
0

Ich versuche, eine einfache SMTP-Server zu entwickeln, ist das Problem, wenn ich versuche, Nachricht aus dem Netzwerk alle Nachrichten sind eine Zeichenfolge mit viel "/ 0" anstelle von getippten Befehl. Ich verwende Telnet, um eine Verbindung zu meiner Anwendung herzustellen und Nachrichten einzugeben.Lesen von Netzwerkproblem. NET

dies ist mein 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); 
      } 
     } 

Antwort

1

Socket.Receive gibt die Anzahl der gelesenen Bytes. Derzeit erhalten Sie immer eine Zeichenfolge aus den 2048 Byte des Puffers, auch wenn nur ein paar Bytes gelesen werden. Ändern zu:

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

es half, vielen Dank – Maki