Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Послать структуру в сокет 
V
    Опции темы
SMiX
Дата 11.8.2007, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 11.8.2007

Репутация: нет
Всего: нет



Разбираюсь с протоколом mail-агента. Пакет представляет из себя структуру.
Код

//отсюда: http://agent.mail.ru/proto.h
typedef struct mrim_packet_header_t
{
    u_long      magic;        // Magic
    u_long      proto;        // Версия протокола
    u_long      seq;        // Sequence
    u_long      msg;        // Тип пакета
    u_long      dlen;        // Длина данных
    u_long    from;        // Адрес отправителя
    u_long    fromport;    // Порт отправителя
    u_char    reserved[16];    // Зарезервировано
}
mrim_packet_header_t;

Чтобы послать ее, можно нудно слать каждое поле одно за другим, однако интересней и красивей было бы послать каким-то образом саму структуру, или как бы копию ее области памяти. Видел, как в паскале просто вторым параметром функции send делают переменную структуры.
Я пытаюсь делать следующим образом:
Код

class Protocol
{
public:
    struct mrim_packet_header_t h;
    Protocol();


};
//............
Protocol::Protocol()
{
    h.seq=2;
    h.magic=CS_MAGIC;
    h.proto=PROTO_VERSION;
    h.from=0;
    h.fromport=0;
    for(int i=0;i<16;i++)
    {
        h.reserved[i] = char(0);
    }
    
}
//..........

Protocol *p = new Protocol();
p->h.msg=MRIM_CS_HELLO_ACK;
p->h.dlen=0;
char*snd = (char*)malloc(sizeof(p->h));
memcpy(snd,&p->h,sizeof(p->h));
send(sock,snd,sizeof(snd),0);

Однако пакет получается не совсем такой, какой нужен, хотя данные из структуры сниффер засек(а именно, значение MRIM_CS_HELLO_ACK/DE AD BE EF/)


Кто имел опыт с протоколом агента или вообще с работой со структурой как с пакетом, подскажите пожалуйста.
PM MAIL   Вверх
SMiX
Дата 11.8.2007, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 11.8.2007

Репутация: нет
Всего: нет



Извините, уже подсказали решение. 
Код

send(sock,(char*)&p->h,sizeof(p->h),0);

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0819 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.