| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Сети > Оч важно! |
| Автор: rutr 1.4.2008, 19:29 |
| Добрый день! Вопрос такой: есть map<string, userinfo>, ключ - имя пользователя, значение - структура с данными пользователя, надо содержимое map'а передать по сети другому пользователю. использую udp. Подскажите плз как лучше это сделать? Или хотя бы как можно передать структуру по сети в двоичном виде? Заранее благодарен! |
| Автор: baldina 1.4.2008, 23:25 | ||||||
видимо как это передать, ты знаешь:
структура точно также:
map: на одном конце передаешь пары key/value, на другом их принимаешь и запихиваешь в map... протокол в данном случае неважен, все происходит аналогично записи в файл. |
| Автор: rutr 2.4.2008, 00:48 |
| спасибо за подсказку, только так как написано не сработало, я сделал так: struct A { int x; int y; char str[32]; }; char *buf = new char[sizeof(A)]; memcpy(buf, &a, sizeof(A)); sendto(sSocket, buf, sizeof(A)); delete []buf; только все же остается вопрос о передачи map'а по сети, так как передавать по паре "ключ - значение" прийдется 255 раз, а надо как можно меньше посылок. |
| Автор: baldina 2.4.2008, 01:05 | ||||||
не получится, map - динамическая структура (дерево). a 255 не так уж и много... можно конечно пары ключ/значение вытащить из map, поместить в массив и его скопом передавать, но смысла имхо в том большого нет.
sendto принимает char*? тогда просто приведи к нужному типу:
|
| Автор: rutr 2.4.2008, 17:35 |
| спасибо, это я понял, а теперь стал вопрос, какое максимальное количество байт я смогу передать за 1 раз по udp? то есть могу ли я передать широковещательную или обычную посылку размером 4096? |
| Автор: korian 2.4.2008, 19:06 |
| судя http://ru.wikipedia.org/wiki/UDP, максимум можно впихнуть 65527 байт данных в один UDP пакет. |
| Автор: rutr 2.4.2008, 20:10 |
| Спасибо за помощь, тема закрыта! |