![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
xrays777 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 24.7.2009 Репутация: нет Всего: нет |
к примеру, есть структура:
struct event { int desc; uint32_t mask; uint32_t time; uint32_t len; char name[256]; } вопросы: 1) каким способом ее можно передать по TCP? я пока остановился на следующем способе: последовательно передавать все поля структуры 2) какое максимальное значение имени файла в Unix (по-моему, 256)? поправьте, если ошибаюсь спасибо всем, кто уделил время |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
|
|||
|
||||
xrays777 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 24.7.2009 Репутация: нет Всего: нет |
спасибо, т.е. так прокатит?!
а как быть, если массив чаровский нестатический, а содержит указатель на строку, а эта строка может быть различной, а требуется передать как бы саму структуру + строку, на которую указывает указатель, а сам бы указатель не нужно было передавать, т.е. char* str="Hello, world"; struct event { int desc; uint32_t mask; uint32_t time; uint32_t len; // длинна строки на которую указывает name char* name; // указатель на строку } event e; e.name=str; e.len=длинна этой строки |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
xrays777, передавай строку, ее длину. а на втором конце собирай.
Это сообщение отредактировал(а) andrew_121 - 27.7.2009, 22:26 -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
vinick |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 9.6.2005 Репутация: 3 Всего: 22 |
Ни в коем случае!!! Если хочешь передавать структуру целиком, то
PATH_MAX у меня определяется как 4096. Это вроде как максимальный полный путь с завершающим нулем. |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
Это почему же? Добавлено через 2 минуты и 56 секунд либо сериализуй структуру. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
vinick |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 9.6.2005 Репутация: 3 Всего: 22 |
||||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
*сериализуй - значит юзай boost.serialization
|
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Про выравнивание структур не забыли?
|
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
azesmcar, а при чем тут твое выравнивание, если код на обоих сторонах компилит 1 компилятор?
и почему выравнивание 1? |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
1. Об этом нигде не сказано (хотя в этом (да и не только в этом) случае могут возникнуть и другие проблемы, но их можно решить по ходу). 2. Настройки в обоих проектах те же самые? 3. Зачем посылать 4 или 8 байт вместо 1-го?
сравни размеры. Это сообщение отредактировал(а) azesmcar - 28.7.2009, 08:56 |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
azesmcar, в большинстве ситуаций, выравнивание значимо больше трафика не сделает.
хотя и прироста быстродействия никакого не даст. зато лишние строчки кода есть. |
|||
|
||||
xrays777 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 24.7.2009 Репутация: нет Всего: нет |
ребята, всем преогромное спасибо за помощь, решил передавать структуру(кроме указателя на строку) и отдельно саму строку
спасибо еще раз всем |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Я назвал 3 причины, и потребление траффика лишь одна из них. Да, если программа за всю сознательную жизнь посылает одну структуру размером в 3 байта - может и не даст, попробуй сгруппировать структуры при отсылке в один пакет, попробуй сделать структуру побольше. И почему тебя так сильно волнуют лишние строки кода? ![]() Хранишь место на диске? Байт - гигабайт бережет. Это сообщение отредактировал(а) azesmcar - 28.7.2009, 10:11 |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
azesmcar, много кода - сложнее читать
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |