PDA

Просмотр полной версии : Socket и политика безопасности


gloomyBrain
07.02.2009, 16:23
Делаю бинарный сокет, все элементарно:

PORT = 7890;
HOST = "127.0.0.1";
try {
sock.connect(HOST, PORT);
} catch (e:Error) {
otf.appendText(e as String);
}
Сервер пишу на яве.
Почитал посты по этой теме, сделал так:
- сервер принимает подключения только на порту 7890
- если пришла строка <policy-file-request/> - отправляем строку с политикой безопасности
- если пришло что угодно, но НЕ запрос политики безопасности - разбираем строку и т.д. ... обычные действия

С чем столкнулся - строка запроса на политику безопасности для моего сервера выглядит вот так:
<policy-file-request/>\0
то есть - одной строкой и с \0 на конце
В ответ передаю в одну строчку вот это:
<cross-domain-policy><allow-access-from domain='*' to-ports='*' /></cross-domain-policy>/0
Слеши перед нулем пробовал в обе стороны
флеш все равно выдает ошибку 2048

Внимание, вопрос:
Что именно нужно отправить флешу, чтобы он принял и согласился на дальнейший реконнект?

BlooDHounD
07.02.2009, 17:22
потому что там по идеи должен быть не слэш + ноль, а нулевой байт.

gloomyBrain
07.02.2009, 17:44
Отлично =)
А как его организовать?
По-моему, если приходит \0 - значит он и есть ноль-байт по представлению флеша... хотя, возможно - по представлению сервера...
Спасибо

UPD:
Попробовал дописать в конец строки \u0000... флеш по прежнему не воспринимает
ХЗ (хотелось бы знать) что делать

KODERart
07.02.2009, 20:09
А если в конце строки не писать ни каких нулевых байтов?
Кажется, флеш их сам добавляет.

gloomyBrain
07.02.2009, 20:13
А вот мне не кажется... =)
Флеш их сам добавляет при отсылке сообщений, а при приеме - я пока не заметил, чтобы он что-нибудь дописывал.
Перепробовал уже много комбинаций, пока безрезультатно.

BlooDHounD
08.02.2009, 15:36
не знаю на чём на там сервер, но во флэше нулевой байт пишется так: writeByte( 0 ); никакого отношения к строке это не имеет.

vapes
09.02.2009, 12:45
http://vapes.na.by/blog/index.php?entry=entry080416-120458

gloomyBrain
09.02.2009, 16:54
2 BloodHound
Спасибо, но вопроса как записать нуль-байт в конце сообщения у меня не возникало, т.к. флеш (у меня) его когда надо сам дописывает.

2 vapes
Спасибо, уже читал и пробовал, флешу не понравилось, он это не понял

Мне кажется, я уже разобрался - дело в том, что сервер по умолчанию мог кодировать не в UTF-8, а во что-то еще. Вот уж не знаю во что, но решил попробовать вручную перекодировать отсылаемую строку.

dimarik
10.02.2009, 00:10
Интересно, во что у Вас сервер мог кодировать zero-byte (!).

gloomyBrain
10.02.2009, 00:37
зиро байт - он, понятное дело в юникоде =)
А вот передаваемая строка - видимо нет
в том и вся проблема
А если передать не строку, а именно сам файл? по идее тогда же не нужно ничего дописывать?(в общем-то и непонятно как к файлу дописать в конце нуль байт =) )

dimarik
10.02.2009, 00:45
зиро байт - он, понятное дело в юникоде =)
А вот передаваемая строка - видимо нет
в том и вся проблема
А если передать не строку, а именно сам файл? по идее тогда же не нужно ничего дописывать?(в общем-то и непонятно как к файлу дописать в конце нуль байт =) )

Закодируйте 0x00 (00h) в Unicode. Побитово. В студию.