sslStream.Read问题:读取的所有字节均为0

|
TcpClient client = new TcpClient(\"69.147.112.160\", 443);
SslStream sslStream = new SslStream(client.GetStream(),false,
                                    ValidateServerCertificate,null);
try
{
    sslStream.AuthenticateAsClient(\"mail.yahoo.com\");
}
catch (AuthenticationException e)
{

    return;
}
byte[] messsage = Encoding.UTF8.GetBytes(\".<EOF>\");
sslStream.Write(messsage);
sslStream.Flush();
byte[] buffer = new byte[4096];
int bytes2 = -1;
do
{
    /**************************************************
     *** JUST A LINE BELOW ALL buffer BYTES ARE ZERO!**
     *************************************************/

    bytes2 = sslStream.Read(buffer, 0, 4096);
    m_sockClient.Send(buffer, bytes2, 0);
} while (bytes != 0);
    
已邀请:
        
buffer
中所有未被
Read
调用填充的字节将为零;这是标准的C#。 如果最后一个字节为零,那么只有两件事可以负责: 您从流中读取了真正的空字节(不太可能)
Read
不会读取任何内容(在这种情况下,它将返回
0
-您一定要检查返回值)     
        
bytes2 = sslStream.Read(buffer, 0, 4096);
最多将4096字节读取到
buffer
中,而不是4096字节。它阻塞直到读取至少一个字节并返回读取的字节数。因此,在方法调用之后,“ 1”将具有与方法调用之前相同的内容(例如,用空填充),除了前“ 8”个字节(这是从服务器接收的字节)之外。     

要回复问题请先登录注册