-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.cpp
More file actions
57 lines (42 loc) · 1.51 KB
/
main.cpp
File metadata and controls
57 lines (42 loc) · 1.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include "tracy/Tracy.hpp"
#include <winsock2.h>
#include <ws2tcpip.h>
#include <iostream>
#include <vector>
#include "RemoteZoneProfiler.h"
#include "tracy/TracyC.h"
int main() {
ZoneScopedN("RemoteZoneServer");
WSADATA wsaData; WSAStartup(MAKEWORD(2,2), &wsaData);
SOCKET serverSocket = socket(AF_INET, SOCK_STREAM, 0);
sockaddr_in serverAddr{};
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(9001);
serverAddr.sin_addr.s_addr = INADDR_ANY;
bind(serverSocket, (sockaddr*)&serverAddr, sizeof(serverAddr));
listen(serverSocket, 1);
std::cout << "[C++] Server listening on port 9001...\n";
SOCKET clientSocket = accept(serverSocket, nullptr, nullptr);
std::cout << "[C++] Java connected!\n";
RemoteZoneProfiler profiler;
while (true) {
unsigned char sizeBuf[4];
int r = recv(clientSocket, (char*)sizeBuf, 4, MSG_WAITALL);
if (r <= 0) break;
const int length = (sizeBuf[0]<<24) | (sizeBuf[1]<<16) | (sizeBuf[2]<<8) | sizeBuf[3];
std::vector<unsigned char> data(length);
{
int got = recv(clientSocket, (char*)data.data(), length, MSG_WAITALL);
if (got != length) break;
}
profiler.handlePacket(data);
}
std::cout << "[C++] Client disconnected\n";
profiler.shutdown();
closesocket(clientSocket);
closesocket(serverSocket);
WSACleanup();
std::cout << "[C++] Server shutting down\n";
std::cout << "\nPress any key to exit...";
std::cin.get();
}