GoodWin
1) клиент подключается к серверу
2) сервер ловит ID_NEW_INCOMING_CONNECTION
и создает у себя игрока, получает индекс сойденения
но у нас было только подключение на заданный порт
глупо сейчас считать это подключение нормальным
будем считать что подключение требует инициализации
3) клиент получает ID_CONNECTION_REQUEST_ACCEPTED
после этого клиент может узнать индекс подключению к серверу
после подключения отправляем пакет инициализации на сервер
обычно в пакете задают информацию о типе програмы клиента,
её версии и прочего, иногда даже информация о шифровании
в худшем случае клиент подключает ID_CONNECTION_ATTEMPT_FAILED
тогда нужно подключится заново, а сервер удалит старое
не инициализированое подключение по time-out (прошло много
времени, а пакет инициализации не пришол)
4) сервер получает пакет инициализации, из пакета получаем
индекс подключения и ищем такого игрока
записываем нужную информацию что пришла с пакетом
генерируем уникальный индекс для игрока (индекс подключения
лутче не использовать, черт его знает что случится сним)
и отправляем примерно такой же пакет инициализации игроку
в нем записываем id игрока, версию протокола и прочее
5) клиент получает пакет инициализации
и записывает из него свой id и прочую нужную информацию
после всего этого подключение считается завершенным
и клиент и сервер начинают свою работу
ps. именно так у меня всё работает в проекте