Мне нужно отправить набор битовых полей вместе со строкой символов от клиента на сервер.
Итак, у меня есть:
#define YES 1
#define FLAG 2
int main(int argc, char* argv[])
{
return sendToServer("The Message", YES | FLAG);
}
int sendToServer(char* msg, int bitfields)
{
/* create socket and connect to server */
/* Assume sock is set */
send(sock, msg, strlen(msg), 0);
return 0;
}
Что было бы лучшеспособ отправки битовых полей?Есть ли способ отправить битовые поля вместе со строкой?
РЕДАКТИРОВАТЬ: Хорошо, я пытаюсь реализовать метод Влада.Мой клиент в значительной степени идентичен тому, что он написал.Я поставил флаг в начале data [0], и вместо bswap я использовал htonl.Мой сервер:
int main(int argc, char* argv[])
{
/* create socket and wait for connection */
char buffer[BUFFERSIZE];
size_t rcvdB = recv(clntSock, buffer, sizeof(int),0);
int flags = ntohl((int) buffer);
rcvdB = recv(clntSock, buffer, sizeof(size_t),0);
size_t msgSize = ntohl((size_t) buffer);
rcvdB = recv(clntSock,buffer,msgSize,0);
/* Then I send back to the client */
ssize_t sntB = send(clntSock,buffer,msgSize,0);
}
Когда клиент печатает сообщение, в конце сообщения есть несколько символов ascii.
EDIT2:
Проблема возникает, когдаЯ прочитал более 8 байтов данных