diff --git a/bakanet/src/bakanet/packet.h b/bakanet/src/bakanet/packet.h index e387243..9aa2cc1 100644 --- a/bakanet/src/bakanet/packet.h +++ b/bakanet/src/bakanet/packet.h @@ -26,7 +26,7 @@ namespace Bk::Net { template void push(const T* data, int size) { - for(int i = 0; i <= size; i++) push(data[i]); + for(int i = 0; i < size; i++) push(data[i]); } template @@ -44,9 +44,18 @@ namespace Bk::Net { std::unique_ptr pull(int size) { std::unique_ptr data(new T[size]); - for(int i = size; i >= 0; i--) data[i] = pull(); + for(int i = size - 1; i >= 0; i--) data[i] = pull(); return data; } + + bool append_data(std::vector data) + { + if (!data.size()) return false; + size_t i = payload.size(); + payload.resize(i + data.size()); + std::memcpy(payload.data() + i, data.data(), sizeof(char) * data.size()); + return true; + } std::vector payload; }; diff --git a/bakanet/src/bakanet/socket.cpp b/bakanet/src/bakanet/socket.cpp index ec3c6dd..4167f3e 100644 --- a/bakanet/src/bakanet/socket.cpp +++ b/bakanet/src/bakanet/socket.cpp @@ -24,8 +24,10 @@ namespace Bk::Net { bool Socket::init() { //Binding step - if (bind(socket_id, (struct sockaddr*)&addr, sizeof(addr)) < 0) + int status; + if ((status = bind(socket_id, (struct sockaddr*)&addr, sizeof(addr)) < 0)) { + perror("bind failed"); return false; } return true; @@ -57,14 +59,14 @@ namespace Bk::Net { return true; } - void Socket::write(std::vector packet) + void Socket::send(std::vector packet) { - send(socket_id, packet.data(), packet.size(), 0); + write(socket_id, packet.data(), packet.size()); } - void Socket::write(Connection conn, std::vector packet) + void Socket::send(Connection conn, std::vector packet) { - send(conn, packet.data(), packet.size(), 0); + write(conn, packet.data(), packet.size()); } std::vector Socket::recv(int size) @@ -72,7 +74,7 @@ namespace Bk::Net { std::vector buffer; buffer.resize(size); int status = read(socket_id, buffer.data(), buffer.size() - 1); - return status ? buffer : std::vector(0); + return status > 0 ? buffer : std::vector(); } std::vector Socket::recv(Connection conn, int size) @@ -80,6 +82,6 @@ namespace Bk::Net { std::vector buffer; buffer.resize(size); int status = read(conn, buffer.data(), buffer.size() - 1); - return status ? buffer : std::vector(0); + return status > 0 ? buffer : std::vector(); } } \ No newline at end of file diff --git a/bakanet/src/bakanet/socket.h b/bakanet/src/bakanet/socket.h index 98abd89..05cd492 100644 --- a/bakanet/src/bakanet/socket.h +++ b/bakanet/src/bakanet/socket.h @@ -28,8 +28,8 @@ namespace Bk::Net { bool start(int cpt_conn); Connection ack(); bool conn(); - void write(std::vector packet); - void write(Connection socket, std::vector packet); + void send(std::vector packet); + void send(Connection socket, std::vector packet); std::vector recv(int size); std::vector recv(Connection socket, int size);