при подключении сервера с ++ флеш-сокет отправляет неверные данные - PullRequest
0 голосов
/ 12 марта 2009

Я пишу чат-сервер на c ++ и флеш-клиент на flex3.
сообщение, которым они обмениваются, выглядит как [message_len + messagebody]
где флэш-память открыта в моей системе Windows XP, она работает нормально, сообщение отправлено и получено правильно.
но когда я помещаю флешку на сервер Apache Red Hat 5, попробуйте открыть ее в веб-браузерах, флеш-сокет отправляет сообщения об ошибках, сообщение не может быть распознано.
сначала, я думаю, может быть, порядок байтов не совпадает, сначала я использую littlendian. Итак, я пробую бигендиан, но на этот раз он не работает даже в локальной системе XP. и с сервера c ++ я вижу на этот раз как локальную, так и удаленную флэш-память, она получает те же данные, но не совпадает с отправленной флэш-памятью, я думаю, это из-за бигендии.

так что ситуация такая: Я использую littleendian, флеш-клиент хорошо работает в локальной системе xp, т.е. 7 explorer. но это не нормально, если я поставлю его на сервер Apache Red Hat 5. Я также пробую сервер ror mongrel, он работает так же .... и если я сохраняю флэш-память из веб-браузера, я обнаружил, что размер файла не равен размеру локальной флэш-памяти;

если я использую bigendian, flash-клиент плохо работает как локально, так и удаленно ... причина в том, что bigendian не подходит для radhat5.

так, кто-нибудь может мне помочь? Большое спасибо.

1 Ответ

1 голос
/ 12 марта 2009

Все зависит от того, как вы читаете длину сообщения из сокета. Если это не маленькая проблема с прямым порядком байтов, возможно, сервер является 64-битной системой, и вы пытаетесь считать 64-битную (= 8 байт) из сокета длину сообщения, в то время как ваша флэш-память на вашей 32-битной системе просто отправляет 32 бита (= 4 байта)? Это приведет к путанице ...

Читает ли сервер слишком большую длину сообщения (> 5.000.000.000)? Это намекает на 64-битное число. Если длина сообщения, считываемого сервером, меньше, но все еще слишком велика (например, 1.000.000.000 или 1.000.000), это, вероятно, проблема с порядком байтов. Если размер сообщения правильный, проблема связана с чем-то другим ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...