Fermé

C++ Client Server

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%

Compétences : Programmation C++, Programmation C#, Programmation C, Architecture Logicielle, PHP

Concernant le client :
( 0 commentaires ) Quakertown, United States

Nº du projet : #35452476

28 freelances font une offre moyenne de 162 $ pour ce travail

urmate

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

%bids___i_sum_sub_35% %project_currencyDetails_sign_sub_36% USD en 7 jours
(729 Commentaires)
7.7
liveexperts123

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

%bids___i_sum_sub_35% %project_currencyDetails_sign_sub_36% USD en 5 jours
(113 Commentaires)
8.0
umg536

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

%bids___i_sum_sub_35% %project_currencyDetails_sign_sub_36% USD en 4 jours
(55 Commentaires)
7.5
kaloyan13

I am great with parallel programming, and have done many network applications. Contact me, so we can discuss details.

%bids___i_sum_sub_35% %project_currencyDetails_sign_sub_36% USD en 2 jours
(573 Commentaires)
7.6
Alexod

I can help you with that, I have similar experience , you can check my profile .

%bids___i_sum_sub_35% %project_currencyDetails_sign_sub_36% USD en 7 jours
(1805 Commentaires)
7.1
koustav2006

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

%bids___i_sum_sub_35% %project_currencyDetails_sign_sub_36% USD en 3 jours
(296 Commentaires)
7.0
apgrl123

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

%bids___i_sum_sub_35% %project_currencyDetails_sign_sub_36% USD en 7 jours
(30 Commentaires)
6.8
supoleksandr85

✔✔✔ 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

%bids___i_sum_sub_32% %project_currencyDetails_sign_sub_33% USD en 1 jour
(38 Commentaires)
6.4
CodingHelpLine

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

%bids___i_sum_sub_35% %project_currencyDetails_sign_sub_36% USD en 3 jours
(118 Commentaires)
6.0
vd58xd24

⚛️ 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

%bids___i_sum_sub_32% %project_currencyDetails_sign_sub_33% USD en 1 jour
(18 Commentaires)
5.2
torrikress2

✅✅✅ 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

%bids___i_sum_sub_35% %project_currencyDetails_sign_sub_36% USD en 3 jours
(22 Commentaires)
5.0
Actisoft2017

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

%bids___i_sum_sub_35% %project_currencyDetails_sign_sub_36% USD en 7 jours
(17 Commentaires)
5.0
aravinda333

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

%bids___i_sum_sub_35% %project_currencyDetails_sign_sub_36% USD en 2 jours
(48 Commentaires)
5.2
RustamGeghamyan

***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!

%bids___i_sum_sub_35% %project_currencyDetails_sign_sub_36% USD en 7 jours
(15 Commentaires)
4.6
prdraco

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

%bids___i_sum_sub_35% %project_currencyDetails_sign_sub_36% USD en 3 jours
(10 Commentaires)
4.9
trostnickovo

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

%bids___i_sum_sub_35% %project_currencyDetails_sign_sub_36% USD en 7 jours
(14 Commentaires)
4.7
ArturDurg75

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

%bids___i_sum_sub_35% %project_currencyDetails_sign_sub_36% USD en 3 jours
(12 Commentaires)
4.4
Nathanron

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

%bids___i_sum_sub_35% %project_currencyDetails_sign_sub_36% USD en 7 jours
(6 Commentaires)
4.2
julienmalfroy

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

%bids___i_sum_sub_35% %project_currencyDetails_sign_sub_36% USD en 7 jours
(3 Commentaires)
3.9
tsmcguinness

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.

%bids___i_sum_sub_35% %project_currencyDetails_sign_sub_36% USD en 7 jours
(7 Commentaires)
4.0