PDA

Просмотр полной версии : Потоковые сокеты сервера и Flash клиент.


shieldnn
19.07.2007, 16:42
Доброго!
Такая проблема, есть сервер который создает для каждого нового клиента поток, и в этом потоке создается сокет. flash клиент конектиться нормально, но передачи данных нет.
При отправке сообшения от flash клиента, данные отправляются частично, т.е. при попытке отправить тестовое сообщение "Hello world", данные доходят с 23 раза попытки отправить сообщение на сервер, причемстрока приходит не вся, а кусками, например(ello world, rld, ...)
Может ли flash клиент работать с потоковыми сокетами, или только с асинхронными?

ЗЫ
При работе с асинхронными сокетами сообщения идут в обе стороны.

сервер написан на C#, причем клоент написанный тоже на C#, работает без проблем...

MyXus
24.07.2007, 14:32
каким образом работаете? через netConnection.connect ?
И самописный сервер на сишарпе?
Тут нужен морочный реверс инжиниринг. Наш сишный прог месяца полтора возился. Даже в доках osflash есть белые пятна (неидентифицированные моменты в протоколе rtmp).

shieldnn
24.07.2007, 15:19
Сервер самопальный, на сишарпе. Создаётся поток в котором крутится бесконечный цикл, с помощью TcpListener прослушиваю порт, при коннекте клиента(AcceptSocket) создаётся новый сокет в новом потоке и запускается ещё поток на чтение запись. вот и всё в принципе. Но получается вышеописанная канитель. Пробовал сделать на асинхронных сокетах, обмен идёт нормальный, но почемуто я сомневаюсь что они подойдут в дальнейшем.
Извиняюсь, но не понял: что такое реверс инжиниринг? Подскажи что такое.

MyXus
24.07.2007, 16:37
Так ты, наверное, говоришь про xml/binary socket во флеше, да? Я с ним не работал, не скажу. Но вообще, самое вкусное - это NetConnection класс во флеше. Там всё что угодно есть, и нет ограничения на порты >1024. Но протокол rtmp по которому оно работает - закрытый, таким образом для организации работы придется поморочиться с распарсиванием всех видов пакетов. Реверс инжиниринг, в моем дилетантском понимании, заключается в том что ты идешь не от идеи к продукту а наоборот. То есть тебе придется ловить пакеты от флеша серверу, разбирать их и пытаться разобраться как работает протокол. Если ты конешно захочешь перейти с xmlsocket на netconnection -)

shieldnn
24.07.2007, 17:31
Да, использовал XMLSocket. Попробую покавырять NetConnection, если асинхронные сокеты в C# не удовлетворят моих потребностей.