从网络问题.NET中读取

时间:2010-12-11 13:02:52

标签: .net network-programming smtp

我尝试开发一个简单的smtp服务器,问题是当我尝试从网络读取消息时,所有消息都是一个包含大量“/ 0”而不是typed命令的字符串。我使用telnet连接到我的应用程序并输入消息。

这是我的代码:

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 个答案:

答案 0 :(得分:1)

Socket.Receive返回读取字节数。目前,即使只读取了几个字节,您总是从缓冲区的2048个字节中获取一个字符串。改为:

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