2010-12-11 5 views
0

간단한 SMTP 서버를 개발하려고하는데 문제는 네트워크에서 메시지를 읽으려고 할 때 입력 된 명령 대신 "/ 0"이 많은 문자열입니다. 텔넷을 사용하여 응용 프로그램에 연결하고 메시지를 입력합니다.네트워크 문제에서 읽기. NET

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); 
      } 
     } 

답변

1

Socket.Receive 읽기 바이트 수를 반환

이 내 코드입니다. 현재 몇 바이트 만 읽더라도 항상 2048 바이트의 버퍼에서 문자열을 얻습니다. 변경 :

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

덕분에 많은 – Maki