Edit protocol for step 2

pull/10/head
Louis Royer 5 years ago
parent 3fc24dfef6
commit 4410bfee99

@ -1,27 +1,14 @@
# P2P-JAVA-PROJECT version 1 (Protocol for step 1) # P2P-JAVA-PROJECT version 1.2 (Binary protocol for step 2)
All messages begins with `P2P-JAVA-PROJECT VERSION 1.0\n` (this version of the protocol).
## Client messages
- `LIST\n`: ask the server to list files from server root directory
- `DOWNLOAD\n<FILENAME>\n`: ask the server to download file <FILENAME> from server root directory. Only one filename is allowed per request.
## Server responses
- The response to `LIST` request is in the format `LIST\n<FILENAME 1>\n<FILENAME 2>\n[…]<LAST FILENAME>\n\n`
- The response to `DOWNLOAD` request is `LOAD\n<FILESIZE (BYTES)>\n<POSITION>\n<CONTENT OF FILE>` 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)
All strings in the datagram are utf-8 encoded. All strings in the datagram are utf-8 encoded.
```Datagram format ```Datagram format
1 byte: [0-7: VERSION(0x11, first quartet is major version, second is minor)] 1 byte: [0-7 (byte 0 ): VERSION(0x11, first quartet is major version, second is minor)]
1 byte: [8-15: REQUEST/RESPONSE CODE] 1 byte: [8-15 (byte 1 ): REQUEST/RESPONSE CODE]
2 bytes: [16-31: RESERVED FOR FUTURE USE] 2 bytes: [16-31 (bytes 2-3): RESERVED FOR FUTURE USE]
4 bytes: [32-63: PAYLOAD SIZE IN BYTES] 4 bytes: [32-63 (bytes 4-7): PAYLOAD SIZE IN BYTES]
x bytes: [64-xx: PAYLOAD] x bytes: [64-xx (bytes 8-?): PAYLOAD]
``` ```
@ -59,15 +46,22 @@ Payload size for Not found is zero.
Payload contains Payload contains
``` ```
8 bytes: [64-127: OFFSET OF FILE CONTENT IN BYTES] 8 bytes: [64-127 (bytes 8-16): OFFSET OF FILE CONTENT IN BYTES]
8 bytes: [128-191: TOTAL FILESIZE] 8 bytes: [128-191 (bytes 17-24): TOTAL FILESIZE]
4 bytes: [192-223: FILENAME SIZE] (cannot be > to PAYLOAD_SIZE - 20 or be zero) 4 bytes: [192-223 (bytes 25-28): FILENAME SIZE] (cannot be > to PAYLOAD_SIZE - 20 or be zero)
y bytes: [<FILENAME>] y bytes: [<FILENAME>]
z bytes: [FILE CONTENT] z bytes: [PARTIAL CONTENT]
``` ```
#### Load request #### Load request
Payload contains only the name of the file to load. Payload contains
```
8 bytes: [64-127 (bytes 8-16): OFFSET OF FILE CONTENT IN BYTES]
8 bytes: [128-191 (bytes 17-24): MAX SIZE OF PARTIAL CONTENT (partial content in response should not excess this size, but this can be less (by example if endoffile is reached or server doesn't have the full block requested)
4 bytes: [192-223 (bytes 25-28): FILENAME SIZE] (cannot be > to PAYLOAD_SIZE - 20 or be zero)
y bytes: [<FILENAME>]
```
### Other response code (errors) ### Other response code (errors)
#### Version error #### Version error

Loading…
Cancel
Save