Давайте вернемся к нашим баранам и продолжим тему
ЗЫ. Естественно америку я не открою, но просто опишу суть.
В даном случае использован проксификатор, с правилами следуещего содержания:
Если приложение wow.exe соединяется с конечной точкой 213.248.127.130:1119,
тогда перенаправить его на 127.0.0.1:9998 (Login - сервер)
иначе если приложение wow.exe соеденяется (адресс не указан, тобиш 0.0.0.0:0),
тогда перенаправляем его на 127.0.0.1:9999 (World - сервер)
Значит, нам надо создать прокси, который бы создал 2 соединения, это соединение с клиентом и соединение с сервером:
* Соединение с клиентом, прокси выступает в качестве сервера и общается с клиентом
* Соединение с сервером, прокси выступает в качестве клиента и общается с сервером (Login - сервером)
но это все у нас пока процесс общения сервером авторизации. (213.248.127.130:1119)
Мы просто выступаем посредником и пересылаем пакеты при этом слушая их.
Но, клиент же должен подключится к World - серверу.
По этому, когда приходит пакет AUTH_REALM в котором приходит IPAdress:port сервера к которому надо подключится,
запоминаем этот IPAdress:port.
Создаем опять 2 подключения, аналогичные первым, только с адресом который мы прочитали и запомнили.
И далее выполняем обмен сообщениями между World - сервером и клиентом.
Для дальнейшей обработки пакетом их можно декриптовать и складывать, или делать с ними что захотим.
Далее, по скольку ввели новую систему распределения нагрузки World - сервер может прислать пакет, который указывает,
что нужно переподключится на новый World - сервер, и присылает данные:
1) SMSG_REDIRECT_CLIENT он присылает адрес нового сервера
2) SMSG_AUTH_CHALLENGE приходят новые сиды
Не знаю, может я что-то упустил, если так, то поправьте пожалуйста.
__________________
|