| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > пакетный протокол для мессенджера |
| Автор: dgolukas 4.1.2010, 00:24 | ||||
| пишу инстант-мессенджер простенький, ну там прием отправка сообщений,пока без файлов, смайлов и всяких статусов. и вот встала задача написать протокол. решила реализовать его в виде двух классов данные и сам протокол у которого будет как бы хиддер и тело, состоящее из объекта класса Data застряла на методе createPacket, прям ступор... т.е. лучше енум этот привести в свитче в самом методе или??? и вот еще статические поля можно же только в статических методах вызывать, как бы мне тогда ID пакета запихнуть в криейт. вобщем требуются как воздух ваши идеи и советы, а я уж их как-нибудь пропишу. и вот еще один вопрос, а в этом протоколе реально ли с обычными данными работать или их надо как-то в бинарном виде??? айнидхелп. з.ы. в идеале, ну по кр мере как я представляю себе все это дело, у меня будет еще класс отдельный обработчик событий, класс обработчик сообщений который будет использовать протокол, ну и классы ресиверы и сендеры.
|
| Автор: dgolukas 4.1.2010, 00:42 | ||||
да, со статикой я и правда увлеклась. я вообще долго понять не могла как это писать.хотела сделать счетчик, ну чтобы у каждого пакета был свой номер. а по поводу перечислений, т.е. мне проще завести класс или структуру, где прописать все возможные типы пакетов и методы работы с ними? потом связать классы и передавать просто в методы? з.ы. статика в классе Data,это я думала,что будув хиддер данных передавать из класса user idы отправителя и получателя это разве можно как-то иначе реализовать?? |
| Автор: andrew_121 4.1.2010, 00:58 | ||
да, можно и так. там же пропишите енумы. почитайте http://ru.wikipedia.org/wiki/%D0%90%D0%B1%D1%81%D1%82%D1%80%D0%B0%D0%BA%D1%82%D0%BD%D0%B0%D1%8F_%D1%84%D0%B0%D0%B1%D1%80%D0%B8%D0%BA%D0%B0_%28%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%29 Добавлено через 2 минуты и 24 секунды пример на С++ довольно подробно демонстрирует реализацию. |
| Автор: dgolukas 4.1.2010, 10:35 |
| ооо! спасибо огромное! ) |
| Автор: dgolukas 4.1.2010, 20:06 | ||||||||||
| от что теперь получилось на выходе (почти на выходе) осталось разобраться как работает map. вопрос не по STL, а скорее правильно ли я идею написания подхватила? и чем можно заменить собственно использование map'a ??? так лучше или совсем бред???
|
| Автор: andrew_121 4.1.2010, 21:28 | ||
стражи нужно ставить до инклюдов.
это скажи, правильно ли код работает. лень все читать. букав много. принадлежность не указана. |
| Автор: dgolukas 4.1.2010, 21:35 | ||
1) да по стражам исправлю. спасибо 2) код не работает в реализации Packet как-то с map кучу ошибок выдает. мне кажется его лучше чем-нить заменить. 3) спасибо, исправила. проглядела. |
| Автор: andrew_121 4.1.2010, 21:41 |
Мне догадаться? ;) если у тебя появляются ошибки, это не значит что его нужно чем-то заменять. согласись, полезнее будет понять в чем суть ошибок. |
| Автор: dgolukas 4.1.2010, 22:11 | ||
Packet.h:19: error: conflicting return type specified for ‘virtual Packet& Packet::createPacket(PacketHeader&, PacketData&)’ PacketFactory.h:18: error: overriding ‘virtual void PacketFactory::createPacket(PacketHeader&, PacketData&)’ Packet.cpp: In constructor ‘Packet::Packet()’: Packet.cpp:9: error: ‘PacketCreate’ is not a member of ‘Packet’ Packet.cpp:9: error: ‘Packet’ is not a template Packet.cpp:9: error: ‘PacketCreate’ was not declared in this scope Packet.cpp:9: error: expected primary-expression before ‘;’ token PacketHeader.h: In member function ‘virtual Packet& Packet::createPacket(PacketHeader&, PacketData&)’: PacketHeader.h:13: error: ‘int PacketHeader::size’ is private Packet.cpp:14: error: within this context Packet.cpp:17: error: ‘map’ was not declared in this scope PacketHeader.h:12: error: ‘int PacketHeader::type’ is private Packet.cpp:17: error: within this context PacketData.h:9: error: ‘std::string PacketData::str’ is private Packet.cpp:17: error: within this context Packet.cpp:17: error: ‘::iterator’ has not been declared Packet.cpp:17: error: expected ‘;’ before ‘mapping’ Packet.cpp:19: error: ‘mapping’ was not declared in this scope |
| Автор: andrew_121 4.1.2010, 22:28 |
| положи весь проект в архив. если не секретный, конечно |
| Автор: dgolukas 4.1.2010, 23:14 | ||
не секретный) завтра с родительского компа заархивирую, у меня на линуксе только Ark, который почему-то только открывает архивы) спсб!!! |
| Автор: dgolukas 9.1.2010, 17:21 | ||
сорре, что пропала.пришлось срочно уехать вобщм я все переделала без фабрики и просто конструктор класса протокол принимает на вход указатель на экземпляр класса хиддер и на экземпляр класса дата. ну и все) все работает вобщм. спасибо за помощь!!! |
| Автор: NYX 16.1.2010, 10:35 |
| А кампот? |
| Автор: dgolukas 16.1.2010, 13:01 | ||||
| компот)) ну вот пакет хидер
и сам пакет)
|