-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathhelper.cpp
More file actions
27 lines (27 loc) · 1.21 KB
/
helper.cpp
File metadata and controls
27 lines (27 loc) · 1.21 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
#include "helper.h"
#include "datapackage.h"
#include "rbslib/Network.h"
#include <stdexcept>
auto Helper::GetRemoteServerMotd(const std::string& remote_server_addr, std::uint16_t remote_server_port) -> neb::CJsonObject
{
auto remote_server = RbsLib::Network::TCP::TCPClient::Connect(remote_server_addr, remote_server_port);
int flag = 1;
remote_server.SetSocketOption(IPPROTO_TCP, TCP_NODELAY, &flag, sizeof(flag));
HandshakeDataPack handshake_data_pack;
handshake_data_pack.id = 0;
handshake_data_pack.server_address = RbsLib::DataType::String(remote_server_addr);
handshake_data_pack.server_port = remote_server_port;
handshake_data_pack.next_state = 1;
handshake_data_pack.protocol_version = 754;
remote_server.Send(handshake_data_pack.ToBuffer());
RbsLib::Network::TCP::TCPStream stream(remote_server);
//发送状态请求
StatusRequestDataPack status_request_data_pack;
remote_server.Send(status_request_data_pack.ToBuffer());
//接收状态并丢弃
StatusResponseDataPack status_response_data_pack;
status_response_data_pack.ParseFromInputStream(stream);
neb::CJsonObject json;
if (!json.Parse(status_response_data_pack.json_response)) throw std::runtime_error("Invalid motd json: "+json.GetErrMsg());
return json;
}