둘 다 동시 디버깅을 위해 push
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
#include "Socket/Address.hpp"
|
||||
#include "Socket/Log.hpp"
|
||||
#include "Packet/Packet.hpp"
|
||||
#include "Utils/Snowflake.hpp"
|
||||
#include "precomp.hpp"
|
||||
|
||||
int main() {
|
||||
@@ -10,18 +11,79 @@ int main() {
|
||||
|
||||
Chattr::Address serveraddr(AF_INET6, "::1", 9011);
|
||||
|
||||
if (sock.connect(serveraddr) == INVALID_SOCKET);
|
||||
if (sock.connect(serveraddr) == INVALID_SOCKET) {
|
||||
spdlog::error("{}", strerror(errno));
|
||||
return 0;
|
||||
}
|
||||
spdlog::info("Connection established from {}", (std::string)serveraddr);
|
||||
|
||||
Chattr::Snowflake myId;
|
||||
|
||||
Chattr::LoginRequestPacket loginRequestPacket;
|
||||
loginRequestPacket.__data.packetType = Chattr::PacketCategory::PACKET_REQUEST;
|
||||
loginRequestPacket.__data.requestType = Chattr::RequestType::LOGIN;
|
||||
loginRequestPacket.__data.dataType = Chattr::DataType::BINARY;
|
||||
loginRequestPacket.__data.packetLength = 14;
|
||||
memcpy(loginRequestPacket.__data.data, "Hello, World!", 14);
|
||||
loginRequestPacket.convToN();
|
||||
sock.send(loginRequestPacket.serialized, 8 + 14, 0);
|
||||
|
||||
Chattr::LoginResponsePacket loginResponsePacket;
|
||||
sock.recv(loginResponsePacket.serialized, 18, 0);
|
||||
loginResponsePacket.convToH();
|
||||
::memcpy(&myId, loginResponsePacket.__data.yourId, sizeof(Chattr::Snowflake));
|
||||
|
||||
Chattr::UsersListRequestPacket usersListRequestPacket;
|
||||
usersListRequestPacket.__data.packetType = Chattr::PacketCategory::PACKET_REQUEST;
|
||||
usersListRequestPacket.__data.requestType = Chattr::RequestType::USERS_LIST;
|
||||
usersListRequestPacket.__data.dataType = Chattr::DataType::TEXT;
|
||||
usersListRequestPacket.__data.packetLength = 0;
|
||||
usersListRequestPacket.convToN();
|
||||
sock.send(usersListRequestPacket.serialized, 8, 0);
|
||||
|
||||
std::vector<std::pair<Chattr::Snowflake, std::string>> users;
|
||||
|
||||
Chattr::UsersListResponsePacket usersListResponsePacket;
|
||||
sock.recv(usersListResponsePacket.serialized, 8, 0);
|
||||
std::uint16_t dataLength = ::ntohs(usersListResponsePacket.__data.packetLength);
|
||||
sock.recv(usersListResponsePacket.serialized + 8, dataLength, 0);
|
||||
usersListRequestPacket.convToH();
|
||||
|
||||
int usersCount = usersListResponsePacket.__data.usersCount;
|
||||
users.reserve(usersCount);
|
||||
Chattr::Snowflake userId;
|
||||
::memcpy(&userId.snowflake, usersListResponsePacket.__data.userId, sizeof(Chattr::Snowflake));
|
||||
users.emplace_back(
|
||||
userId,
|
||||
std::string((char*)usersListResponsePacket.__data.name, usersListResponsePacket.__data.packetLength - 14)
|
||||
);
|
||||
|
||||
for (int i = 0; i < usersCount - 1; i++) {
|
||||
sock.recv(usersListResponsePacket.serialized, 8, 0);
|
||||
std::uint16_t dataLength = ::ntohs(usersListResponsePacket.__data.packetLength);
|
||||
sock.recv(usersListResponsePacket.serialized + 8, dataLength, 0);
|
||||
usersListRequestPacket.convToH();
|
||||
|
||||
::memcpy(&userId.snowflake, usersListResponsePacket.__data.userId, sizeof(Chattr::Snowflake));
|
||||
users.emplace_back(
|
||||
userId,
|
||||
std::string((char*)usersListResponsePacket.__data.name, usersListResponsePacket.__data.packetLength - 14)
|
||||
);
|
||||
}
|
||||
|
||||
Chattr::DataPostPacket dataPostPacket;
|
||||
dataPostPacket.__data.packetType = Chattr::PacketCategory::PACKET_POST;
|
||||
dataPostPacket.__data.requestType = Chattr::RequestType::DATA;
|
||||
dataPostPacket.__data.dataType = Chattr::DataType::TEXT;
|
||||
dataPostPacket.__data.packetLength = 14;
|
||||
dataPostPacket.__data.packetLength = 14 + 8;
|
||||
for (auto user : users)
|
||||
if (user.first != myId) {
|
||||
::memcpy(dataPostPacket.__data.destId, &user.first.snowflake, sizeof(Chattr::Snowflake));
|
||||
break;
|
||||
}
|
||||
memcpy(dataPostPacket.__data.data, "Hello, World!", 14);
|
||||
dataPostPacket.convToN();
|
||||
sock.send(&dataPostPacket.serialized, 8 + 14, 0);
|
||||
sock.send(&dataPostPacket.serialized, 6 + 14 + 8, 0);
|
||||
|
||||
Chattr::ResponsePacket packet;
|
||||
sock.recv(&packet.serialized, 10, 0);
|
||||
|
||||
Reference in New Issue
Block a user