1
0
mirror of https://github.com/fumiama/simple-dict.git synced 2026-06-05 02:00:25 +08:00

Update README.md

This commit is contained in:
源文雨
2021-03-21 15:16:33 +08:00
committed by GitHub
parent 9d373ca96a
commit 37032d426f

View File

@@ -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.