diff --git a/doc/protocol.md b/doc/protocol.md index addb917..29622e2 100644 --- a/doc/protocol.md +++ b/doc/protocol.md @@ -7,6 +7,57 @@ All messages begins with `P2P-JAVA-PROJECT VERSION 1.0\n` (this version of the p ## Server responses - The response to `LIST` request is in the format `LIST\n\n\n[…]\n\n` -- The response to `DOWNLOAD` request is `LOAD\n\n` or `NOT FOUND\n` if the file doesn't exists. +- The response to `DOWNLOAD` request is `LOAD\n\n\n` or `NOT FOUND\n` if the file doesn't exists. - The server send a `PROTOCOL ERROR\n` message if it doesn't understands what the client sent. - The server send a `INTERNAL ERROR\n` message if it encounters an internal error. + +# P2P-JAVA-PROJECT version 1.1 (Binary protocol for step 1) + +```Datagram format + +[0-7: VERSION(0x11, first quartet is major version, second is minor)] +[8-15: REQUEST/RESPONSE CODE] +[16-31: RESERVED FOR FUTURE USE] +[32-63: PAYLOAD SIZE IN BYTES] +[64-xx: PAYLOAD] + +``` + +## Requests and responses codes +- REQUESTS (msb is 0): + - `LIST` (0x00) + - `DOWNLOAD` (0x01) + +- RESPONSES (msb is 1): + - `LIST` (0x80) + - `LOAD` (0x81) + - `NOT FOUND` (0x82) + - `PROTOCOL ERROR` (0x83) + - `INTERNAL ERROR` (0x84) + +### List +Payload size for list request is always zero. +Payload for list response is filenames separated by `\n`. + +### Download +#### Not found +Response when the file requested is not found on the server. +Payload size for Not found is zero + +#### Protocol error +Response when the request cannot be interpreted. +Payload size for Protocol error is zero + +#### Internal error +Response in internal failure case. +Payload size for Internal error is zero + +#### Load response +Payload contains + +``` +[64-127: OFFSET OF FILE CONTENT IN BYTES] +[128-159: TOTAL FILESIZE] +[\n] +[FILE CONTENT] +```