Приветствую.
Нужно передать по сети структуру такого вида:
#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.
В чем может быть проблема?