HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 11.01.2025, 20:30
Smeruxa
Познавший АНТИЧАТ
Регистрация: 27.11.2020
Сообщений: 1,431
С нами: 2874035

Репутация: 183


По умолчанию

Не помню откуда у меня этот исходник, но он рабочий. Когда-то давно мне это нужно было, и либо мне его чат гпт написал, либо что-то еще, но проект был заброшен.

Если кому-то нужно будет на плюсах написать свой лаунчер, то для пропинговки сервера ловите код:

ВОЗМОЖНО, что уже есть готовый код на плюсах, но когда-то я его вообще нигде найти не мог

C++:





[CODE]
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#pragma comment(lib, "Ws2_32.lib")
void
queryServer
(
const
std
::
string
&
ip
,
unsigned
short
port
)
{
WSADATA wsaData
;
int
result
=
WSAStartup
(
MAKEWORD
(
2
,
2
)
,
&
wsaData
)
;
if
(
result
!=
0
)
{
std
::
cerr

query
=
{
'S'
,
'A'
,
'M'
,
'P'
}
;
std
::
stringstream
ss
(
ip
)
;
std
::
string segment
;
while
(
std
::
getline
(
ss
,
segment
,
'.'
)
)
{
query
.
push_back
(
static_cast

(
std
::
stoi
(
segment
)
)
)
;
}
query
.
push_back
(
static_cast

(
port
&
0xFF
)
)
;
query
.
push_back
(
static_cast

(
(
port
>>
8
)
&
0xFF
)
)
;
query
.
push_back
(
'i'
)
;
int
sendResult
=
sendto
(
sock
,
query
.
data
(
)
,
query
.
size
(
)
,
0
,
(
sockaddr
*
)
&
serverAddr
,
sizeof
(
serverAddr
)
)
;
if
(
sendResult
==
SOCKET_ERROR
)
{
std
::
cerr

(
static_cast

(
buffer
[
i
]
)
)

(
buffer
+
offset
)
)
;
offset
+=
2
;
int
maxPlayers
=
*
(
reinterpret_cast

(
buffer
+
offset
)
)
;
offset
+=
2
;
int
hostnameLen
=
*
(
reinterpret_cast

(
buffer
+
offset
)
)
;
offset
+=
4
;
if
(
recvBytes

(
buffer
+
offset
)
)
;
offset
+=
4
;
if
(
recvBytes

(
buffer
+
offset
)
)
;
offset
+=
4
;
if
(
recvBytes

 
Ответить с цитированием

  #2  
Старый 12.01.2025, 18:03
chromiusj
Флудер
Регистрация: 10.08.2021
Сообщений: 6,010
С нами: 2505538

Репутация: 133


По умолчанию

Исходник - sa:mp query mechanism

Описание: Получает инфу о сервере сампа. это мой вариант реализации. предлагайте свои идеи по улучшению и ругайте мой код!! GitHub: https://github.com/Receiver1/re_samp_query_mechanism Использование: auto sqm = c_sqm::singleton(); sqm->initialize("176.32.37.93", 7777); auto srv_info =...

www.blast.hk
 
Ответить с цитированием

  #3  
Старый 12.01.2025, 19:22
Smeruxa
Познавший АНТИЧАТ
Регистрация: 27.11.2020
Сообщений: 1,431
С нами: 2874035

Репутация: 183


По умолчанию

Цитата:
Сообщение от chromiusj  

Исходник - sa:mp query mechanism

Описание: Получает инфу о сервере сампа. это мой вариант реализации. предлагайте свои идеи по улучшению и ругайте мой код!! GitHub: https://github.com/Receiver1/re_samp_query_mechanism Использование: auto sqm = c_sqm::singleton(); sqm->initialize("176.32.37.93", 7777); auto srv_info =...

www.blast.hk

Помню, пытался сделать его как постоянную пропинговку - ошибки/стопы в потоках и т.д. возникали

Как одноразово отрабатывал прекрасно, переносил в основной проект на постоянную пропинговку - не получалось

(я не отрицаю возможность своего рукопопства)
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.