mirror of
https://github.com/ddnet/ddnet.git
synced 2024-09-20 01:24:18 +00:00
Add ping tool
This commit is contained in:
parent
d7e5a7b9ab
commit
7ff73a2ee5
7
bam.lua
7
bam.lua
|
@ -319,6 +319,7 @@ function build(settings)
|
|||
|
||||
versionserver = Compile(settings, Collect("src/versionsrv/*.cpp"))
|
||||
masterserver = Compile(settings, Collect("src/mastersrv/*.cpp"))
|
||||
ping = Compile(settings, Collect("src/ping/*.cpp"))
|
||||
game_shared = Compile(settings, Collect("src/game/*.cpp"), nethash, network_source)
|
||||
game_client = Compile(client_settings, CollectRecursive("src/game/client/*.cpp"), client_content_source)
|
||||
game_server = Compile(settings, CollectRecursive("src/game/server/*.cpp"), server_content_source)
|
||||
|
@ -359,6 +360,9 @@ function build(settings)
|
|||
masterserver_exe = Link(server_settings, "mastersrv", masterserver,
|
||||
engine, zlib)
|
||||
|
||||
ping_exe = Link(server_settings, "ping", ping,
|
||||
engine, zlib)
|
||||
|
||||
-- make targets
|
||||
c = PseudoTarget("client".."_"..settings.config_name, client_exe, client_depends)
|
||||
if string.find(settings.config_name, "sql") then
|
||||
|
@ -371,8 +375,9 @@ function build(settings)
|
|||
v = PseudoTarget("versionserver".."_"..settings.config_name, versionserver_exe)
|
||||
m = PseudoTarget("masterserver".."_"..settings.config_name, masterserver_exe)
|
||||
t = PseudoTarget("tools".."_"..settings.config_name, tools)
|
||||
p = PseudoTarget("ping".."_"..settings.config_name, ping_exe)
|
||||
|
||||
all = PseudoTarget(settings.config_name, c, s, v, m, t)
|
||||
all = PseudoTarget(settings.config_name, c, s, v, m, t, p)
|
||||
return all
|
||||
end
|
||||
|
||||
|
|
67
src/ping/ping.cpp
Normal file
67
src/ping/ping.cpp
Normal file
|
@ -0,0 +1,67 @@
|
|||
#include <iostream>
|
||||
#include <base/system.h>
|
||||
#include <base/math.h>
|
||||
#include <mastersrv/mastersrv.h>
|
||||
#include <engine/shared/network.h>
|
||||
#include <engine/shared/packer.h>
|
||||
|
||||
static CNetClient g_NetOp; // main
|
||||
|
||||
int main(int argc, char **argv) // ignore_convention
|
||||
{
|
||||
NETADDR BindAddr;
|
||||
BindAddr.type = NETTYPE_ALL;
|
||||
g_NetOp.Open(BindAddr, 0);
|
||||
|
||||
if(argc != 2)
|
||||
{
|
||||
dbg_msg("ping", "wrong parameters");
|
||||
return 1;
|
||||
}
|
||||
|
||||
NETADDR Addr;
|
||||
if (net_host_lookup(argv[1], &Addr, NETTYPE_ALL))
|
||||
{
|
||||
dbg_msg("ping", "host lookup failed");
|
||||
return 1;
|
||||
}
|
||||
|
||||
unsigned char Buffer[sizeof(SERVERBROWSE_GETINFO)+1];
|
||||
CNetChunk Packet;
|
||||
|
||||
mem_copy(Buffer, SERVERBROWSE_GETINFO, sizeof(SERVERBROWSE_GETINFO));
|
||||
|
||||
int CurToken = rand() % 256;
|
||||
Buffer[sizeof(SERVERBROWSE_GETINFO)] = CurToken;
|
||||
|
||||
Packet.m_ClientID = -1;
|
||||
Packet.m_Address = Addr;
|
||||
Packet.m_Flags = NETSENDFLAG_CONNLESS;
|
||||
Packet.m_DataSize = sizeof(Buffer);
|
||||
Packet.m_pData = Buffer;
|
||||
|
||||
g_NetOp.Send(&Packet);
|
||||
|
||||
int64 startTime = time_get();
|
||||
|
||||
net_socket_read_wait(g_NetOp.m_Socket, 1000000);
|
||||
|
||||
g_NetOp.Update();
|
||||
|
||||
while(g_NetOp.Recv(&Packet))
|
||||
{
|
||||
if(Packet.m_DataSize >= (int)sizeof(SERVERBROWSE_INFO) && mem_comp(Packet.m_pData, SERVERBROWSE_INFO, sizeof(SERVERBROWSE_INFO)) == 0)
|
||||
{
|
||||
// we got ze info
|
||||
CUnpacker Up;
|
||||
|
||||
Up.Reset((unsigned char*)Packet.m_pData+sizeof(SERVERBROWSE_INFO), Packet.m_DataSize-sizeof(SERVERBROWSE_INFO));
|
||||
int Token = str_toint(Up.GetString());
|
||||
if(Token != CurToken)
|
||||
continue;
|
||||
|
||||
int64 endTime = time_get();
|
||||
std::cout << (double)(endTime - startTime) / 1000 << " ms" << std::endl;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue