generated from AfonsoCMSousa/CPP-Template
fix: finnaly working!
This commit is contained in:
parent
ff07d6dcdf
commit
c67c6d56f7
BIN
PlayerTracker
BIN
PlayerTracker
Binary file not shown.
@ -21,6 +21,10 @@ class Socket {
|
|||||||
struct sockaddr_in server_addr;
|
struct sockaddr_in server_addr;
|
||||||
struct sockaddr_un server_addr_unix;
|
struct sockaddr_un server_addr_unix;
|
||||||
|
|
||||||
|
// Server port for input (listening)
|
||||||
|
int server_port_input;
|
||||||
|
char buffer[1024];
|
||||||
|
|
||||||
// Socket Data
|
// Socket Data
|
||||||
api_packet packet_data;
|
api_packet packet_data;
|
||||||
|
|
||||||
@ -28,14 +32,18 @@ class Socket {
|
|||||||
Socket();
|
Socket();
|
||||||
~Socket();
|
~Socket();
|
||||||
|
|
||||||
void connect_server(const char *ip, uint16_t port);
|
void connect_server(const char *ip, uint16_t port, uint16_t port_input);
|
||||||
void connect_unix(const char *ip, uint16_t port);
|
|
||||||
void send_server();
|
void send_server();
|
||||||
void send_unix();
|
|
||||||
void send_server(const api_packet &data);
|
void send_server(const api_packet &data);
|
||||||
void send_server(const void *data, size_t len);
|
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 send_unix(const api_packet &data);
|
||||||
void set_packet(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();
|
api_packet get_packet();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -22,15 +22,23 @@ int main(int argc, char *argv[]) {
|
|||||||
// Connect socket to API
|
// Connect socket to API
|
||||||
sock.connect_unix(app.app_api_socket_path.c_str(), app.app_port_out);
|
sock.connect_unix(app.app_api_socket_path.c_str(), app.app_port_out);
|
||||||
// Connect socket to Server
|
// 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
|
// Right after connecting, send update rate request
|
||||||
char request[3] = {0};
|
char request[516] = {0};
|
||||||
request[0] = ACSP_REALTIMEPOS_INTERVAL;
|
request[0] = ACSP_REALTIMEPOS_INTERVAL;
|
||||||
request[1] = 127;
|
request[1] = 120;
|
||||||
|
|
||||||
sock.send_server(request, sizeof(request));
|
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) {
|
} catch (const runtime_error &e) {
|
||||||
cerr << "Error: " << e.what() << endl;
|
cerr << "Error: " << e.what() << endl;
|
||||||
return 1;
|
return 1;
|
||||||
|
|||||||
@ -16,7 +16,8 @@ Socket::~Socket() {
|
|||||||
close(sock_unix);
|
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);
|
server_addr.sin_port = htons(port);
|
||||||
if (inet_pton(AF_INET, ip, &server_addr.sin_addr) <= 0) {
|
if (inet_pton(AF_INET, ip, &server_addr.sin_addr) <= 0) {
|
||||||
throw runtime_error("Invalid IP address");
|
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() {
|
void Socket::send_unix() {
|
||||||
ssize_t sent_bytes = send(sock_unix, &packet_data, sizeof(packet_data), 0);
|
ssize_t sent_bytes = send(sock_unix, &packet_data, sizeof(packet_data), 0);
|
||||||
if (sent_bytes < 0) {
|
if (sent_bytes < 0) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user