如果将来有人遇到这个问题,我会留下这个。
*注意从 C 客户端到 C 服务器时,这种方法不起作用。这只适用于 Java 客户端到 C 服务器。所以我不得不放弃这种方法。
好吧,我已经和 C 吵了太久了。我正在使用 UDP 将一些信息从 java 客户端传递到 C 服务器。我可以在那里获取信息,但我不确定如何拆分消息以存储到这样的结构中
struct __attribute__((__packed__)) clientMessage
{
short tml;
short rid;
char op;
char message[MAXBUFLEN-5];
};
我收到这样的消息char test[MAXBUFLEN-5];
if ((numbytes = recvfrom(sockfd, test, MAXBUFLEN-1, 0,
(struct sockaddr *)&their_addr, &addr_len)) == -1) {
perror("recvfrom");
exit(1);}
因此,我需要获取消息“7 2 1Yo”(两个 2 字节的短裤和一个字符,后跟一个未知的消息长度)并将其存储到结构中的适当部分。消息被正确发送,我只是无法将它分解成我需要的信息。我目前正在尝试
memcpy(&cm.rid, &test, 2);
memcpy(&cm.tml, &test[1], 2);
memcpy(&cm.op, &test[4], 1);
memcpy(&cm.message, &test[5], MAXBUFLEN-5);
但我的结果最终是
Message: Yo
OP: 1Yo
RID: 7 1Yo
TML: 2 7 1Yo
它应该是
Message: Yo
OP: 1
RID: 2
TML: 7
我成功地收到了消息,但没有别的。我对C比较陌生,所以请原谅我的无知。我猜这真的很容易,但 idk。