C++ Client Server
Budget $30-250 USD
Job Description:
1. Create a key-value store server that accepts requests to access a centralized data storage over the network
2. Create a key-value store client that makes requests to access key-value store over the network
3. Test the client/server programs
Description
A key/value store must provide the same interface that a C++ map would offer:
get(key) returns the value associated with key, if present, or null otherwise
del(key) removes key and its associated value from the store, and returns true. If the key wasn't in the store, returns false.
put(key, value) adds a mapping from key to value, if no prior mapping for key exists. If a mapping exists, then it is modified, so that the mapping from key will be to the provided value.
Note that the key/value store must be highly concurrent. That is, it should use as many threads as are available, and should allow operations on different data elements to proceed simultaneously as much as possible.
In order to be as general as possible, key/value stores typically treat the key as a string, and the value as a byte array. If there is any structure to the values, the key/value store does not know about it.
To implement the key/value store data structure, you cannot simply use the std::unordered_map, because it does not support concurrency. You will need to create your own data structure or use the TBB library for concurrent containers. If you opt for creating your own data structure, the easiest approach is to create a large array, where each array element holds a linked list. You can use the built-in C++ hash function to hash a key to one of these lists, and you can achieve concurrency by locking at the granularity of lists.
Finally, it's important to specify the protocol to be used for sending requests to the key/value store over the network, and for receiving results from the key/value store.
The format will be similar to the HTTP protocol: we will make use of newlines and lines of text for metadata, and variable-length content for binary data. Note: it is acceptable to forbid newlines within keys. However, a value may contain arbitrary binary data, to include \0 and \n characters.
Format of the put request
first line: PUT\n
second line: KEY-LEN: number\n
third line: the key, ending with \n
fourth line: VAL-LEN: number\n
remaining lines: the value (VAL-LEN bytes)
Format of the get request
first line: GET\n
second line: KEY-LEN: number\n
third line: the key, ending with \n
Format of the del request
first line: DEL\n
second line: KEY-LEN: number\n
third line: the key, ending with \n
Format of the response to GET
first line: either OK\n or ERROR\n
second line: RESULT-LEN: number\n
remaining lines: the result value (RESULT-LEN bytes)
Format of the response to PUT and DEL
first line: either OK\n or ERROR\n
Note: when ERROR is returned, there should be no further data transmitted in the response.
You should always check for properly-formed input.
You are expected to design and implement two components:
A client that builds key/value requests and sends them over the network to the key/value server. The client should also receive a response and display the results received from the server.
A server that accepts key/value requests from clients, executes the requested operations on the map data structure, and builds a response that is sent to the client. The server may process more than one request from different clients. Be sure to include multithreading in the server implementation.
Both components should use the port 1895 for the network communication.
You also need to test these two components by running four clients and one server. Create test cases for all the possible operations and their outcomes.
Server design (UML diagram) 15%
Server C++ code 20%
Client design (UML diagram) 15%
Client C++ code 20%
Test cases and Testing 30%
28 freelances font une offre moyenne de 162 $ pour ce travail
Hi I have checked your project description. I have excellent programming and development skills. Contact me with all the details and requirements for your project for further discussion. I will provide you with dedica Plus
Hi there,I'm biddin on your project "C++ Client Server" I have read your project description and i'm an expert in C programming and machine learning therefore i can do this project for you perfectly.I still have a few Plus
Hi there, I'm bidding on your project "C++ Client Server" Being an expert in C, and C++ programming I can do this project for you. please leave a message on my chat so we can discuss the budget and deadline of the pro Plus
I am great with parallel programming, and have done many network applications. Contact me, so we can discuss details.
Hi..I am proficient in C/C++ programming with client/server TCP/IP socket programming along with data structures, algorithms, binary data struct and can help you implement the client/server key/value store application Plus
I CAN COMPLETE YOUR PROJECT EASILY Hello, I am programmer with enough experiences on C/C++, Python for 10+ years. C/C++, Python is nice programming language and I am majoring on it for long years so I have confident to Plus
✔✔✔ Hello, . Hope you're doing well. I have been working with C Programming, C# Programming, Software Architecture, C++ Programming and PHP for over 7 years. I have read your project description carefully and I hope Plus
Hello Sir/Madam I have development experience in various Programming Languages, OOP, Data Structures, Database Driven applications, APIs, Files handling and Data Transformation, ETL and various frameworks. I assure Plus
⚛️ Expert for C/C++, C , Server/Client, Algorithm, able to start right now ⚛️ Hello, I am senior developer with enough experiences on C, C/C++, Server/Client, OOP, Algorithm For 7+ years. so I have confident to compl Plus
✅✅✅ Full Experiences in Server-Client Programming with C/C++ ✅✅✅ Hi, Dear! I read your requirement carefully. I can do your work perfectly. I can start Your work right now... Hope to discuss with you soon. Thanks & Bes Plus
Hello, Nice meet you! I have read your project requirements and then I am sure I can complete that project. I can help you. Thank you
Hi, I have great experience in implementing multi threaded servers for the Linux platform. I have read your detailed description and I feel I can definitely implement the multi threaded server that will accept key Plus
***can do your project in a day*** Hello, how are you? I understood what you want and I can do your project in a day. Please discuss with me. Thank you!
I am Software Engineer, Programmer and Database Engineer with strong Algorithms, Data structures, Logical and analytical abelites. If you are looking for customized Programming services, Logical Problem solving, Right Plus
Hello, I have rich experience in C/C++ programming. I have read all your explanations carefully and fully understand your requirements. So I am sure I can give you correct and good results. I would appreciate it if you Plus
Hi! I have fully understand what you want from this project. I've experienced 10+years of experience and full knowledge in C/C++, Network Programming and Pararell Programming If you hire me, I can make your needs com Plus
Greetings ! I read your project details carefully. I am a full stack developer with 10+ years of experience. I have strong technical skills like C/C++ programming. I am looking forward to your positive response. Afte Plus
Dear Client! I've just read your job description carefully. I am very interested in this job and I think that I am suitable to this job. Because I have a lot of experience with C, C++, PHP, Python, Javascript... I ha Plus
hello. i read your posting carefully and understood what you want. i am c++ expert having rich experience for 6+ years. please contact me. i promise the best solution. thanks.