Как реализовать:
Слушать сокет соединение (не crossdomain.xml забросить на веб сервер, а именно сокетный коннект слушать) по нужному порту и ждать от клиентов сообщение "<policy-file-request/>" в ответ всегда отправлять "<cross-domain-policy><allow-access-from domain=\"*\" to-ports=\"*\" /></cross-domain-policy>" (нулевой байт в конце не забываем так как это xmlsocket) и закрыть соединение.
Файл политики спрашивается при прямом сокет коннекте в трёх вариантах по очереди:
1. Сначала по 843 порту. Если рутовый доступ есть, то лучше его использовать, так как он первый спрашивается.
Если нет ответа то
2. По указанному порту в Security.loadPolicyFile. Следует использовать в случаях когда не хочется смешивать два протокола xml-строковый (по которому общается политика) и например игровой бинарный.
Если нет ответа то
3. По тому же порту которому устанавливается соединение. Самый простой, но минус в том что нельзя адекватно организовать очередь пакетов (по хорошему нужно делать, пакеты могут быть не полные) так как всегда будешь ожидать строку "<policy-file-request/>" для всех клиентов.
Пример простого сокет серверного коннекта на AIR с двумя клиентами в виде игры крестики-нолики по третьему варианту.
xo.zip
по аналогии такой же сервер будет и на java, и на php, и на c# и на C++
Если всё правильно делать, то флеш плеер всегда спросит эти 3 варианта. если где то выдалось cross-domain-policy то законнектиться.
По опыту скажу, что если есть возможность разделить web сервер (nginx, apache) и игровой сервер то лучше вешать на 80 порт, так как 80 у всех пользователей открыт (кроме пользователей которые через прокси сидят, с only http, тут уже ничего не поделаешь)