diff options
| author | alpine <[email protected]> | 2020-06-25 15:27:55 +0200 |
|---|---|---|
| committer | alpine <[email protected]> | 2020-06-25 15:27:55 +0200 |
| commit | 7067cac3b6d62ae17d02c636f7c5b92f8f587641 (patch) | |
| tree | 8953389cb128e8a3cdca70283bcdb75b63bc7d48 /server/src/client/client.cpp | |
| parent | Added client version control. (diff) | |
| download | loader-7067cac3b6d62ae17d02c636f7c5b92f8f587641.tar.xz loader-7067cac3b6d62ae17d02c636f7c5b92f8f587641.zip | |
Added 2 key xor encryption for streams.
Diffstat (limited to 'server/src/client/client.cpp')
| -rw-r--r-- | server/src/client/client.cpp | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/server/src/client/client.cpp b/server/src/client/client.cpp index 4313e85..452c234 100644 --- a/server/src/client/client.cpp +++ b/server/src/client/client.cpp @@ -38,28 +38,37 @@ void tcp::client::gen_session() { } } -int tcp::client::stream(std::vector<char>& data) { +int tcp::client::stream(std::vector<char>& data, float *dur/*= nullptr*/) { auto size = data.size(); auto networked_size = htonl(size); - write(&networked_size, sizeof(networked_size)); + int a = write(&networked_size, sizeof(networked_size)); - // with 4kb chunk size, speed peaks at 90mb/s + // with 4kb chunk size, speed peaks at 90mb/s without enc + // speed is at ~75mb/s with xor constexpr size_t chunk_size = 4096; size_t sent = 0; + auto start = std::chrono::steady_clock::now(); while (size > 0) { auto to_send = std::min(size, chunk_size); - int ret = write(&data[sent], to_send); + std::string chunk(&data[sent], to_send); + enc::encrypt_message(chunk); + int ret = write(chunk.data(), chunk.size()); if (ret <= 0) { break; } - sent += ret; - size -= ret; + sent += ret - 2; + size -= ret - 2; } + auto end = std::chrono::steady_clock::now(); + std::chrono::duration<float> time = end - start; + if(dur) + *dur = time.count(); + return sent; } |