From 37032d426febafc7e36a489aa2cc73c1be3caa61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Sun, 21 Mar 2021 15:16:33 +0800 Subject: [PATCH] Update README.md --- README.md | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) diff --git a/README.md b/README.md index a70487c..afe53e7 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,93 @@ # simple-dict-server database["key"]="value" + +# Compile +You should first clone this project into a system with cmake & libpthread installed. +If you plan to compile it on Windows, you should edit the source code to transform the socket/thread/file libraries into Windows version. +```bash +git clone https://github.com/fumiama/simple-dict-server.git +``` +Now we will create a `build` folder. +```bash +cd simple-dict-server +mkdir build +``` +Then use `cmake` command to generate files for `make` automatically. +```bash +cd build +cmake ../ +``` +Now you can use `make` to generate executable binary files named `simple-dict-server` and `simple-dict-client` in `./build` directory. +```bash +make +``` + +# Use +Now we will show you how to start the server on localhost. You can try the command below. +```bash +chmod +x simple-dict-server simple-dict-client +./simple-dict-server -d 7777 1 ./dict.bin # use -d to start as daemon +Bind server success! +Listening.... +Ready for accept, waitting... +Run on thread No.0 + +``` +Then you can open another shell to connect to it. +```bash +./simple-dict-client 127.0.0.1 7777 +``` +Now you have connected to the server. Type `fumiama` and press enter in `10` seconds to get the read/write access. You can modify the password in the source code as you like. Please note that the server will only wait `10` seconds for a response after the last communication. The communication below shows how to control the server to accompilsh basic add/del/find/edit operations. +```bash +break! +Get sockfd +Connected to server +Welcome to simple dict server. +Thread create succeeded +Enter command:fumiama +Enter command:set #set a key-value pair +Recv 3 bytes: set +Enter command:test #key +Recv 4 bytes: data +Enter command:测试 #value +Recv 4 bytes: succ +Enter command:get #get a value using key +Recv 3 bytes: get +Enter command:test +Recv 6 bytes: 测试 +Enter command:del #delete a key +Recv 3 bytes: del +Enter command:test +Recv 4 bytes: succ +Enter command:get +Recv 3 bytes: get +Enter command:test +Recv 4 bytes: null +Enter command:set +Recv 3 bytes: set +Enter command:test +Recv 4 bytes: data +Enter command:测试 +Recv 4 bytes: succ +Enter command:lst #list all keys match pattern +Recv 3 bytes: lst +Enter command:t #pattern +Recv 5 bytes: test + +Enter command:quit +Enter command:^C +``` +You can also use `cat` command to get the raw data directly. +```bash +break! +Get sockfd +Connected to server +Welcome to simple dict server. +Thread create succeeded +Enter command:fumiama +Enter command:cat +Recv 131 bytes: 128test测试 +Enter command:quit +Enter command:^C +``` +The raw data starts with a integer showing the size of data, then send all data in `./dict.bin` to the client.