ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Реконнект для SRP (https://forum.antichat.xyz/showthread.php?t=1314241)

SR_team 29.10.2016 19:14

Сегодня меня угораздило попасть на SRP, и конечно же, через некоторое время я получил кик. Но реконнект не помог - сервер не отвечал. По разбиравшись узнал, что теперь на samp RP можно зайти только предварительно его пропинговав (кликнув по строчке с сервером в samp.exe). Исходя из этого я предполагаю следующее решение (предполагаю, а не предлагаю, потому что не проверял, и проверять не собираюсь).

Перед тем как подключиться к серверу, его нужно пропинговать. Функции пинга есть в RakClientInterface, для соба это g_RakClient->GetInterface()->, для SF это SF->getRakNet()->getRakClient()->. Пинговать можно как текущий сервер, так и любой другой, для этого есть метод PingServer, для пинга сервера к которому вы не подключены (для реконнекта вероятно именно он понадобится), необходимо иметь ip сервера, port сервера, port своего ПК. Есть еще 4й параметр, но его название говорит за себя "onlyReplyOnAcceptingConnections".

И так единственная проблема это открытый порт на вашем ПК. Как его узнать? Да очень просто! Это реализуется методом GetPlayerID(), который возвращает структуру PlayerID, в этой структуре хранится ваш ip адрес (в бинарном вмде) и порт, с которым устанавливалось соединение.

Вот собственно и все. Пингуем сервер, а потом подключаемся, подключиться можно через тот же RakClientInterface, указав порт.

FYP 29.10.2016 19:19

не хочу тебя разочаровывать, но придётся. эти функции ракнета к query-системе сампа никакого отношения не имеют. пропинговка в ракнете нужна лишь для поддержания статуса активности соединения, т.к. используется UDP, и чтобы пинговать сервер из клиента в него нужно запиливать эту функциональность самому.

Maddy 01.11.2016 07:54

https://sampwiki.blast.hk/wiki/Query_Mechanism

На адвансе и даймонде тоже стоит такая же система, на адвансе требует запрос -r, на остальных серверах не проверял


Время: 09:43