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%
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 questions. please leave a message on my chat so we can discuss the budget and deadline of the project.
Thanks.
..
.
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 project. Also, have a look at my profile for my reviews and portfolios. Thanks
Note: This is not an automated bid and i'm ready to discuss your project right now.
..
.
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 dedicated support
and follow-up.
Regards
Farah Khan
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 as per given requirements for Unix/Linux machine using POSIX threads.
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 complete your project by C/C++, Python.
I can work by full time for your project and trying to satisfy the requirements.
I am designing the project from scratch and structure it well.
I am following the project's design process exactly, and if any error is found, fix it within 24 hours and provide maintenance free of charge for a month.
Client's idea + Programmer's good coding is the perfect result, this is my idea.
I want to keep long-term relationship for customer so I want to give the nice result.
If you want the perfect result, please contact with me.
✔✔✔ 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 my experience would be helpful for your project.
I've checked your attachment briefly as well.
I'd like to have a brief chat or call to discuss further details about your project.
Looking forward to working with your project soon.
Best wishes,
Olek
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 you an excellent solution of your project within the time
frame and exactly according to the requirements.
Thanks
@CodingHelpLine
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 Data structures for your program or want to design normalize Database for your system, you are on the right place.
⚛️ 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 complete your project.
I can work by full time for your project and trying to satisfy the requirements.
I am designing the project from scratch and structure it well.
"Client's idea + Programmer's robotic coding is the perfect result"
This is my idea.
If you want to the perfect result, please contact with me.
https://www.freelancer.com/u/vd58xd24
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 requests and returns the data necessary for the client.
I believe I can definitely implement it following the protocol required, but I am bit confused about the UML diagrams though, as I don't use UML in day to day life. I am very much interested in working on this amazing project and I am happy to help you in every way possible! Please feel free to contact me via chat so that we can discuss further and start working on this amazing project right away !!!
Best Regards,
Aravind A
***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!
✅✅✅ 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 & Best regards!
https://www.freelancer.com/u/torrikress2
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 come true quickly and perfectly.
I look forward to your notice for further discussion.
Regards.
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 could contact me soon and share your project details.
we can discuss about timeline and budget on there.
Thank you.
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.
After all, I will bring you competitive and relevant result that you're looking for and it might bring us
futuristic cooperation in this field. In recognition of this project specification,
I will pose the reasonable and receptive budget and timeline that you can buy into.
As I am excited about this opportunity, I am thankful if I might have a chance to talk with you via chat.
Best Regards
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.
Hello, I've read your project description carefully. I am a professional web/app developer with over 7 years of experience, so I 've very strong experience with C programming language such as C++, C#.
I can fix issue now !!
The most important things I am focused on are credit and integrity.
I am sure I am the person who you are looking for.
I'm interested to work on your project.
Waiting for your reply. I hope you response me.
Looking forward to working with You!