簡體   English   中英

如何使用UDP套接字在C中發送結構而不進行序列化?

[英]how to send structure in C using UDP sockets without serialization?

我正在嘗試使用C發送結構而不使用序列化

// client
typedef struct student_rec {
char name[25];
float gpa;
int pid;
} stu;

stu stu = { "Ray T Champion" , 4.0 ,  12345666};

sendto(sk,&stu,sizeof(struct student_rec),0,&remote,sizeof(remote));




//server
typedef struct student_rec {
char name[25];
float gpa;
int pid;
} stu;

stu s ;
struct student_rec *ptr;
ptr = &s;
recvfrom(sk,&s,sizeof(struct student_rec),0,&remote,&rlen);
printf("%s\n", ptr->name);
printf( "%d\n", ptr->pid );

我收到的名稱很好,但是pid不正確,我得到了垃圾值,我對持久性不滿意,我只想一口氣就能發送結構。

您面臨一個麻煩問題。

您發送123456660x00BC6142相同

並且您收到1113701376等於0x4261BC00

在發送之前轉換為網絡字節順序

stu.pid = htonl(stu.pid);

收到轉換后(返回)到主機字節順序。

stu.pid = ntohl(stu.pid);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM