diff --git a/PlayerTracker b/PlayerTracker index 049667a..804d520 100755 Binary files a/PlayerTracker and b/PlayerTracker differ diff --git a/include/net.hpp b/include/net.hpp index 8ca3841..bce15f7 100644 --- a/include/net.hpp +++ b/include/net.hpp @@ -21,6 +21,10 @@ class Socket { struct sockaddr_in server_addr; struct sockaddr_un server_addr_unix; + // Server port for input (listening) + int server_port_input; + char buffer[1024]; + // Socket Data api_packet packet_data; @@ -28,15 +32,19 @@ class Socket { Socket(); ~Socket(); - void connect_server(const char *ip, uint16_t port); - void connect_unix(const char *ip, uint16_t port); + void connect_server(const char *ip, uint16_t port, uint16_t port_input); void send_server(); - void send_unix(); void send_server(const api_packet &data); void send_server(const void *data, size_t len); + void receive_server(); + char *get_buffer() { return buffer; } + + void connect_unix(const char *ip, uint16_t port); + void send_unix(); void send_unix(const api_packet &data); void set_packet(const api_packet &data); - api_packet create_packet(uint8_t tracker_id); + + api_packet create_packet(uint8_t tracker_id); api_packet get_packet(); }; diff --git a/source/main.cpp b/source/main.cpp index 7b23558..6c213f1 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -22,14 +22,22 @@ int main(int argc, char *argv[]) { // Connect socket to API sock.connect_unix(app.app_api_socket_path.c_str(), app.app_port_out); // Connect socket to Server - sock.connect_server(app.app_server_out_ip.c_str(), app.app_port_out); + sock.connect_server(app.app_server_out_ip.c_str(), app.app_port_out, app.app_port_in); // Right after connecting, send update rate request - char request[3] = {0}; + char request[516] = {0}; request[0] = ACSP_REALTIMEPOS_INTERVAL; - request[1] = 127; + request[1] = 120; sock.send_server(request, sizeof(request)); + + // Try and request session info + request[0] = ACSP_GET_SESSION_INFO; + sock.send_server(request, sizeof(request)); + sock.receive_server(); + + char *buffer = sock.get_buffer(); + printf("Received data from server: %s\n", buffer); } catch (const runtime_error &e) { cerr << "Error: " << e.what() << endl; diff --git a/source/net.cpp b/source/net.cpp index c0b0151..74904d6 100644 --- a/source/net.cpp +++ b/source/net.cpp @@ -16,7 +16,8 @@ Socket::~Socket() { close(sock_unix); } -void Socket::connect_server(const char *ip, uint16_t port) { +void Socket::connect_server(const char *ip, uint16_t port, uint16_t port_input) { + this->server_port_input = port_input; server_addr.sin_port = htons(port); if (inet_pton(AF_INET, ip, &server_addr.sin_addr) <= 0) { throw runtime_error("Invalid IP address"); @@ -47,6 +48,13 @@ void Socket::send_server() { } } +void Socket::receive_server() { + ssize_t recv_bytes = recvfrom(sock_server, buffer, sizeof(buffer), 0, NULL, NULL); + if (recv_bytes < 0) { + throw runtime_error("Failed to receive data"); + } +} + void Socket::send_unix() { ssize_t sent_bytes = send(sock_unix, &packet_data, sizeof(packet_data), 0); if (sent_bytes < 0) {