=========100分求解一个关于NetWorkStream的奇怪问题==========
yanga 2006-10-23 11:42:31 我在写一个邮件的收发程序,主要步骤如下:
===========================================
1.连接到邮件服务器并提供账号密码登录.
2.获取邮箱的邮件数量及大小.
3.循环读取邮件内容并添加到一个DataTable对象.
4.断开与邮件服务器的连接.
===========================================
与服务器的数据通信用Socket
发送与接收数据用NetWorkStream
主要的功能我都写在一个名为"Email"的类里面
显示数据的页面名为"WebForm1.aspx"
我的问题是:直接运行该程序的话,总是有规律的少一部份邮件数据,例如:
总邮件数为:10
邮件的ID 邮件的内容
1 无
2 无
3 有
4 有
5 无
6 无
7 无
8 有
9 无
10 无
当我把断点设在收邮件的"Email"类中函数"ReadPOP"上逐步调试时又能正常取到所有邮件数据了.
我的感觉就是在向服务器发送命令后,必需要稍微等一下再收就可以正常得到数据否则就不行.
有个朋友和我说要把缓冲区清理一下才行.
向服务器发送命令与接收邮件数据的函数如下:
向服务器发送命令
Private Sub WritePOP(ByVal s As String)
s &= ControlChars.CrLf
NetStream.Write(Encoding.ASCII.GetBytes(s.ToCharArray), 0, s.Length)
End Sub
接收邮件数据
Private Function ReadPOP() As String
Dim myReadBuffer(1024) As Byte
Dim numberOfBytesRead As Integer = 0
Dim s As String = ""
Do
numberOfBytesRead = NetStream.Read(myReadBuffer, 0, myReadBuffer.Length)
s &= Encoding.ASCII.GetString(myReadBuffer, 0, numberOfBytesRead)
Loop While NetStream.DataAvailable
Return s
End Function