Why not use a StreamReader and StreamWriter with the NetworkStream? You are reading and sending crlf terminated lines of strings all the way with this protocol, ie ReadLine/WriteLine. Multiline responses simply end with a "." line.
|
|
Hello everyone again.
I was writing my own POP3 client but ran into some problems along the way. I could hunt down one of them by now, which seems to be the key to most of the problems I experienced.
I'm using a TCPClient to connect to the server and a NetworkStream to read and write data. This is working great, except one thing: The LIST command delivers me the size of the mail in bytes...but with Lf counted, though, if I start to download the mail with the RETR command, I receive CrLf?!
I'm using the simple NetworkStream.Read(bytes(), offset, length) Method to read from the network. This method already delivers CrLf...but the server counts Lf and so the size I received is totally messed up.
Of course, I'd count the Lf along the way and add them to toReceive (which I do right now, working), but that can't be the solution.Code:'toReceive is an Int32 from the LIST command 'Me.prv_client is the TCPClient 'Me.prv_strm is the NetworkStream from the client Dim buffer(Me.prv_client.ReceiveBufferSize - 1) As Byte Dim readAll As Integer = 0 Dim read As Integer = Int32.MaxValue Do Array.Clear(buffer, 0, buffer.Length) read = 0 Try read = Me.prv_strm.Read(buffer, 0, buffer.Length) Catch ex As IOException Me.writeError(ex.Message) End Try readAll += read res.Append(Me.prv_encoding.GetString(buffer, 0, read)) Loop While readAll < toReceive
Anybody has ever seen something like this?
Thanks in advance,
Bobby
Don't give TypeCasting Errors a chance, turn ON Option Strict!
Greatest Obfuscator ever: EazFuscator (Freeware)
Greatest Reflection Tool ever: .NET Reflector (Freeware) with Add-Ins
Greatest Introspection Tool ever: Gendarme (GPL)
Greatest MySQL FrontEnd ever: MySQL-Front (Shareware), HeidiSQL (GPL)
Why not use a StreamReader and StreamWriter with the NetworkStream? You are reading and sending crlf terminated lines of strings all the way with this protocol, ie ReadLine/WriteLine. Multiline responses simply end with a "." line.
Some useful links: Learning videoes, Code Samples, WMI Code Creator, MSDN, The Code Project, WindowsClient.net, ASP.net, W3 Schools, Regular-Expressions.info, GDI+ FAQ
How to format posts with code blocks etc - present the problem/post properly
Mmmhhh...you're right. I was afraid that there might be false positive with this simple char sequence (CrLf.CrLf), but they must be the last thing I read.
Thanks for your suggestion, I tried it and it's working (of course).
Thank you,
Bobby
Don't give TypeCasting Errors a chance, turn ON Option Strict!
Greatest Obfuscator ever: EazFuscator (Freeware)
Greatest Reflection Tool ever: .NET Reflector (Freeware) with Add-Ins
Greatest Introspection Tool ever: Gendarme (GPL)
Greatest MySQL FrontEnd ever: MySQL-Front (Shareware), HeidiSQL (GPL)
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks