The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"проблема с recv()"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"проблема с recv()" 
Сообщение от roman Искать по авторуВ закладки(??) on 18-Ноя-05, 05:20  (MSK)
Приветствую.

Нужно передать по сети структуру такого вида:

#define BUF 30

/* client message */
typedef struct msg_s {
    int msg_type;                    /* message type: MSG_REQ, MSG_REPLY */
    int msg_rc;                      /* reply code */
    char msg_id[BUF];
    char msg_passwd[BUF];
} msg_t;

struct sockaddr_in serv_addr;
...
/* here is 'hp' filled */

/* zero out structure */
memset(&serv_addr, 0, sizeof serv_addr);

/* fill in structure */
serv_addr.sin_family = AF_INET;
memcpy(&serv_addr.sin_addr, hp->h_addr, hp->h_length);
serv_addr.sin_port = htons(port);

/* create socket based on TCP */
if ( (sd = socket(AF_INET, SOCK_STREAM, 0)) < 0 ) {
    perror("socket() error!");
    exit(EXIT_FAILURE);
}
...
/* send buffer to server */
if ( send(sd, m, sizeof(msg_t), 0) == -1 ) {
    perror("send() error");
    exit(EXIT_FAILURE);
}

Соединение устанавливается успешно, но вот данные структуры передаются странным
образом: msg_type и msg_rc в порядке, а msg_passwd и msg_id как бы в перевернутом
виде, то есть если отправитель посылает user1\0\0\0\0\0\0, то получатель
получит \0\0\0\0\0\0user1.

В чем может быть проблема?

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]

1. "проблема с recv()" 
Сообщение от dimus emailИскать по авторуВ закладки(??) on 18-Ноя-05, 07:20  (MSK)
Может проблема в том, что данные не туда записываются ПЕРЕД передачей?
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "проблема с recv()" 
Сообщение от roman Искать по авторуВ закладки(??) on 18-Ноя-05, 07:27  (MSK)
>Может проблема в том, что данные не туда записываются ПЕРЕД передачей?
куда именно "не туда"? :)
Eсть предположение, что нужно recv()/send() вызывать в цикле, и проверять количество полученных/отправленных байтов.

Или не туда копаю?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "проблема с recv()" 
Сообщение от dimus emailИскать по авторуВ закладки(??) on 18-Ноя-05, 10:53  (MSK)
>>Может проблема в том, что данные не туда записываются ПЕРЕД передачей?
>куда именно "не туда"? :)
>Eсть предположение, что нужно recv()/send() вызывать в цикле, и проверять количество полученных/отправленных
>байтов.
>
>Или не туда копаю?

Однажды у меня была похожая проблема при записи в файл. Как показало расследование, я перепутал поля в структуре на стадии ее заполнения. Когда увидел ваш постинг - сразу вспомнился ваш случай.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "проблема с recv()" 
Сообщение от roman Искать по авторуВ закладки(??) on 19-Ноя-05, 05:36  (MSK)
>Однажды у меня была похожая проблема при записи в файл. Как показало
>расследование, я перепутал поля в структуре на стадии ее заполнения. Когда
>увидел ваш постинг - сразу вспомнился ваш случай.
Спасибо за наводку. Еще раз внимательно просмотрел код и нашел эту ошибку.
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру