meta data for this page
  •  

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision Both sides next revision
courses:ct30a5000:assignment6 [2011/10/17 17:14]
julaakko [Additional notes and hints]
courses:ct30a5000:assignment6 [2012/07/03 13:34]
julaakko
Line 5: Line 5:
  
  
-====== Assignment6: ​POP3 client ​====== +====== Assignment6:​ ======
- +
-In this assignment you are going to implement Post Office Protocol3 (POP3) server according to [[http://​tools.ietf.org/​html/​rfc1939|RFC 1939]]. In POP3 protocol everything is sent as ASCII text command and each command string is terminated with carriage return and line feed -characters (CRLF). POP3 uses TCP as transport layer protocol.  +
- +
-Use your previously implemented test server for testing the client.+
  
  
 ===== Description ===== ===== Description =====
- 
-This is the second part of the POP3 assignment, in this  part you are going to implement a client for listing the mailbox contents on the server. Client should not crash if invalid data is received from the server. 
- 
-Client connects to the selected port of the server and after the authentication is successful the server allows the client to access the mailbox. ​ 
- 
-Client must support: 
- 
-  * logging in to mailbox 
-  * requesting of mails in the mailbox 
-  * requesting a specific mail from the mailbox and parsing the contents to be shown to the user 
-  * deleting the selected mail from the mailbox 
-  * reseting the state of the mailbox 
-  * logging out of the mailbox (quit) 
  
  
 ===== Requirements ===== ===== Requirements =====
- 
-Client has to support at least following commands resulting in protocol commands defined for minimal POP3 implementation in the [[http://​tools.ietf.org/​html/​rfc1939|RFC]]:  ​ 
- 
-^ User command ​    ^ Protocol command ^ When command is OK client should ​   ^ 
-| /user <​username>​ | USER <​username> ​ | ask for password. ​                  | 
-| /pass <​password>​ | PASS <​password> ​ |  | 
-| /noop            | NOOP             ​| ​ | 
-| /quit            | QUIT             | shut down. | 
-| /​status ​         | STAT             | print the mailbox size and message count to stdout | 
-| /list <​x> ​       | LIST <​x> ​        | print the message ids and sizes to stdout | 
-| /get <​x> ​        | RETR <​x> ​        | print the parsed message to stdout. | 
-| /delete <​x> ​     | DELE <​x> ​        | inform user that the messages was deleted | 
-| /​reset ​          | RSET             ​| ​ | 
- 
  
   * [[generic_features_to_implement|Generic features]]   * [[generic_features_to_implement|Generic features]]
-  * Client must handle possible error situations specified for each protocol command. 
-  * Keep track of the state of the connection between client and server 
-    * Remember that some commands are available only in certain states. 
-  * Client must parse the message headers returned by the server and not to print them directly: 
-    * Hide the ''​to''​ field since the logged user should be the recipient 
-    * Always hide the message id  
-  * To run the client:<​code>​./​pop3client -h <pop3 server address> -p <​listening port></​code>​ 
- 
- 
  
 ===== Additional notes and hints ===== ===== Additional notes and hints =====
  
-  * Remember the ''​CRLF''​ at the end of each protocol command. 
 ===== Questions ===== ===== Questions =====