C++ Ping Test

354216

Hectopat
Katılım
16 Temmuz 2020
Mesajlar
1.524
Makaleler
14
Çözümler
9
Kaynak Kodu:
[CODE lang="cpp" highlight="51"]#include <iostream>
#include <vector>

std::string SendCommand(std::string Command) {
char Buffer[128];
std::string Result;
std::shared_ptr<FILE> pipe(_popen(Command.c_str(), "r"), _pclose);
while (!feof(pipe.get())) {
if (fgets(Buffer, 128, pipe.get()) != NULL)
Result += Buffer;
}
return Result;
}

std::vector<std::string> SplitString(std::string Text, std::string Delimiter) {
size_t Start = 0, End, Len = Delimiter.length();
std::string Token;
std::vector<std::string> Result;
while ((End = Text.find(Delimiter, Start)) != std::string::npos) {
Token = Text.substr(Start, End - Start);
Start = End + Len;
Result.push_back(Token);
}
Result.push_back(Text.substr(Start));
return Result;
}

bool CheckString(std::string Text, std::string Word) {
if (Text.find(Word) != std::string::npos) {
return true;
}
else {
return false;
}
}

std::string Ping(std::string IP) {
std::string Str1 = SendCommand("ping -n 1 -w 100 " + IP);
if (CheckString(Str1, "Request timed out") == true) {
return "Error";
}
std::vector<std::string> vStr1 = SplitString(Str1, "\n");
std::string Str2 = vStr1[2];
std::vector<std::string> vStr2 = SplitString(Str2, "time=");
std::string Str3 = vStr2[1];
std::vector<std::string> vStr3 = SplitString(Str3, " TTL=");
return vStr3[0];
}

int main() {
std::cout << Ping("google.com") << std::endl;
return 0;
}[/CODE]

Çıktı:
1636997454806.png
 
Dostum, neden sadece Windows'ta çalışacak şekilde yapıyorsun ki, daha doğrusu neden "ping" diye bir programa ihtiyaç var? Bir soket kütüphanesi kullanarak ping testi yapabilirsin. ASIO kullanabilirsin Boost ile gelen, veya ayrı da indirebilirsin. Ya da SpaceSockets2 kullanıp beni mutlu edebilirsin. :)
 
Bu oyunların sunucu adreslerini hangi adresleri baz alarak ping testi yaptınız acaba, oyun sunucusunun adresi mi yoksa site adresi mi? Eğer birincisi ise Valorant için kullandığınız sunucu adresini öğrenmemde bir sakınca var mı? Kaynak kodunuzda sadece Google için pingleme yapacak şekilde paylaşmışsınız da.
 
Bu oyunların sunucu adreslerini hangi adresleri baz alarak ping testi yaptınız acaba, oyun sunucusunun adresi mi yoksa site adresi mi? Eğer birincisi ise Valorant için kullandığınız sunucu adresini öğrenmemde bir sakınca var mı? Kaynak kodunuzda sadece Google için pingleme yapacak şekilde paylaşmışsınız da.
Oyunların en çok veri alışverişi yaptığı IP adreslerini baz aldım genelikle. Kimi IP adresi oyun firmaları tarafından sunulmuş ve çıkardıklarımla uyuşuyor kimi ise benim çıkardıklarım ama resmi olarak doğrulanamayan IP adresleri. Paylaşımda örnek amaçlı Google yazdım doğrusu Google DNS için 8.8.8.8 olacaktır.
 

Technopat Haberler

Geri
Yukarı