C# 我的程序如何知道服务器何时处理完我的请求?
我正在使用IMAP和Telnet连接到邮件服务器。连接后,我会将收件箱中的所有项目标记为已读。有时收件箱只有几封电子邮件,有时收件箱可能有数千封电子邮件。我将来自服务器的响应存储到字节数组中,但字节数组具有固定长度C# 我的程序如何知道服务器何时处理完我的请求?,c#,.net,asp.net,vb.net,C#,.net,Asp.net,Vb.net,我正在使用IMAP和Telnet连接到邮件服务器。连接后,我会将收件箱中的所有项目标记为已读。有时收件箱只有几封电子邮件,有时收件箱可能有数千封电子邮件。我将来自服务器的响应存储到字节数组中,但字节数组具有固定长度 Private client As New TcpClient("owa.company.com", 143) Private data As [Byte]() Private stream As NetworkStream = client.GetStream() . . some
Private client As New TcpClient("owa.company.com", 143)
Private data As [Byte]()
Private stream As NetworkStream = client.GetStream()
.
. some code here generates a response that I want to read
.
data = New [Byte](1024) {}
bytes = stream.Read(data, 0, data.Length)
但是服务器的响应会根据成功标记为已读的电子邮件的数量而有所不同,因为我对处理的每封电子邮件都会得到一行确认。有些时候,响应可能只包含10-20行,其他时候它将包含数千行。有什么方法可以让我从服务器上获得完整的响应吗?我的意思是,似乎我必须知道服务器何时处理完我的请求,但我不确定如何才能完成这一任务
因此,我要重申的问题是:我如何签入程序以查看服务器何时处理完响应?为什么不只检查未读邮件数?如果没有未读邮件,那么所有邮件都已标记为未读:)为什么不检查未读邮件数?如果没有未读邮件,那么所有邮件都被标记为未读:)这是一个有趣的例子,C代码通过TCP与服务器通信。它显示了如何使用While循环等待服务器通过线路发送所有数据 专注于HandleClientComm()例程,因为这是您可能希望使用的一些代码。这是一个有趣的C代码通过TCP与服务器通信的示例。它显示了如何使用While循环等待服务器通过线路发送所有数据
请专注于HandleClientCommand()例程,因为这是您可能希望使用的一些代码。我相信您可以使用NetworkStream的DataAvailable属性:
if( stream.CanRead)
{
do{
bytes = stream.Read(data, 0, data.Length);
//append the data read to wherever you want to hold it.
someCollectionHoldingTheFullResponse.Add( data);
} while( stream.DataAvailable);
}
最后,“someCollectionHoldingTheFullResponse”(内存流?字符串?列表?符合您的要求)将保存完整响应。我相信您可以使用NetworkStream的DataAvailable属性:
if( stream.CanRead)
{
do{
bytes = stream.Read(data, 0, data.Length);
//append the data read to wherever you want to hold it.
someCollectionHoldingTheFullResponse.Add( data);
} while( stream.DataAvailable);
}
最后,“someCollectionHoldingTheFullResponse”(内存流?字符串?列表?满足您的要求)将保存完整响应