develop a UDP to TCP relay server and UDP client to match

Ukończone Opublikowano Feb 11, 2016 Płatność przy odbiorze
Ukończone Płatność przy odbiorze

General: This project requires expertise in Visual Studio 2013, c++, c++11 and its programming style and libraries, asio as applies to udp, cereal serialization, and boost as needed, in the application of UDP communication. Please only apply if you are experienced with the methodologies listed.

Overview: a client application needs to make a request to a server and get a response. Currently this is done via a HTTP web service. In some cases the client environment breaks HTTP and TCP in general and we want to build a bypass that would communicate via UDP. A new relay server in the cloud talks UDP to the client, and relays the requests to an existing HTTP web service, gets the web service response, and relays it back through UDP to the client.

The scope of this project includes the client side udp communication and the full relay server.

The client side is a class, with a static but thread safe method that accepts a wstring request and returns a wstring response or generates an exception if something went wrong. This class would be compiled into the real product, but for development you must write some small wrapper to use it. Once a request is received, it is broken into chunks that would fit nicely into a UDP packet. The chunks are put into structures that include: A random 64 bit int designating this request, the chunk number, total number of chunks in this request, error status string "", and the chunk contents. The structures are serialized using cerial and sent over UDP to the server. The request and response can sometimes be 10s of megabytes.

The server collects the structures arriving over UDP. When all arrived, it reconstructs the original wstring request and sends it over HTTP POST to the existing web service. The service returns a wstring response or fails (timeout, 404, etc). The relay server send a response back to the client, using similar structures serialized by similarly. If there is an error a single UDP datagram is sent with the error indication filled. If no error, then the wstring is broken into chunks and sent back over UDP similarly to the way the client side sent it. The request number should match the one from the original client.

Timeout and cleaning: The client and server side will have a separate cleanup thread that runs in a loop once in a few minutes. The cleanup looks for requests that were never answered, or communications where chunks were missing for a long time. It will destroy the memory taken up by those stuck requests. When cleanup thread cleans request, the original request caller should get an error indication.

The relay server should use some existing library to call the HTTP POST and that library would have some timeout built in as well as error indications. The error indication would clean up the ongoing request and also be sent to the client as described above. One the client side we are building the communication from scratch, so a timer should watch over it and if it is not done within 60 seconds it should be aborted cleaned and an exception generated to the caller.

Platform: This project involves c++11 code on windows. Both on the client side and on the server side. However, we have plans to port both sides to Linux, so you may not use any Windows API or library and must code everything through pure c++11, boost and cerial, so that the code will be as portable as possible.

Programowanie w C++ Przetwarzanie w chmurze Tworzenie oprogramowania

Numer ID Projektu: #9624722

O projekcie

8 ofert Zdalny projekt Aktywny Feb 18, 2016

Przyznany użytkownikowi:

arthurprs

Hello, I'm an experienced network and C++ developer. From your requirements I can already tell that we need to use async IO to achieve the best performance. I look forward to hear more details on this project and d Więcej

$600 USD w ciągu 7 dni
(2 ocen)
4.5

8 freelancerów złożyło ofertę za $523 w tym projekcie

Yknox

Hello I'm interesting your project very well I'm a Good C++/C#, Java, TCP/UDP, C/S, Math, Algorithm expert. I m quite well experienced in these jobs. Let's go ahead with me I want to service for you continousl Więcej

$750 USD w ciągu 7 dni
(607 Oceny)
8.8
hbxfnzwpf

I am very proficient in c and c++. I have 16 years c++ developing experience now, and have worked for more than 6 years. My work is online game developing, and mainly focus on server side, using c++ under linux environ Więcej

$300 USD w ciągu 10 dni
(95 Oceny)
6.6
lis82

Hello, i am experienced C/C++ developer under windows and linux. I am also have experinece in boost library and TCP/IP stack. I plan to do this project not going to HTTP level, just UDP to TCP relay, i think this is su Więcej

$555 USD w ciągu 20 dni
(9 Oceny)
4.1
olegabr

A proposal has not yet been provided

$750 USD w ciągu 5 dni
(5 Oceny)
3.8
joe2016

We are highly experienced IT Professionals, Software Developers, Web Designers and IT Architects. We specialize in business, technical, academic, commercial, fiction, and blog writing. Every word of mine would spea Więcej

$250 USD w ciągu 10 dni
(4 Oceny)
3.1
huskytr

I believe that I have enough experience to complete this project. Currently, I am working on a simulation project which requires 3 seperate processes communicate with each other. I have used boost asio and boost serial Więcej

$277 USD w ciągu 7 dni
(0 Oceny)
0.0