The List
, Retrieve
and Delete
methods
used two private methods, Write
and Response
, to
send and receive messages from the POP3 server.
private void Write(string message)
{
System.Text.ASCIIEncoding en = new System.Text.ASCIIEncoding()
;
byte[] WriteBuffer = new byte[1024] ;
WriteBuffer = en.GetBytes(message) ;
NetworkStream stream = GetStream() ;
stream.Write(WriteBuffer, 0, WriteBuffer.Length);
Debug.WriteLine("WRITE:" + message);
}
C# native strings, like Java native strings, are UNICODE. We therefore need
to encode and decode the strings to and from ASCII. After encoding the string,
we can then retrieve the socket stream by calling the TcpClient.GetStream
method.
I finish the Write
method by called the Debug.Writeline
method.
This sends the string to the debug stream for help with debugging.
private string Response()
{
System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
byte[] serverbuff = new Byte[1024];
NetworkStream stream = GetStream();
int count = 0;
while (true)
{
byte[] buff = new Byte[2];
int bytes = stream.Read(buff, 0, 1 );
if (bytes == 1)
{
serverbuff[count] = buff[0];
count++;
if (buff[0] == '\n')
{
break;
}
}
else
{
break;
};
};
string retval = enc.GetString(serverbuff, 0, count );
Debug.WriteLine("READ:" + retval);
return retval;
}
The Response
method is similar to the Write
method
accept that we retrieve bytes from the stream before decoding them. Again we
call the Debug.WriteLine
method to send the read data to the debug
stream and help with debugging. Note that we have a limitation in the Response
method.
We can only retrieve or send up to 1024 bytes at a time. I'll fix this in a
later release. If you intend to use this in production, then you'll have to
do the same first.
Comments