如何 通过udp发送 如下结构体

german010 2008-06-18 11:32:06
代码如下:
struct _PLATFORM1 //数据结构
{
int err_num1;//故障代码

int sj1;
int hy1;
int zy1;
username[32];
char data[];//
} Platform1,*pPlatform1;
上面 结构体包括:字符数组和不定长数组, 如何在 通过udp 接收和发送此种结构体?
能否给个例子?
...全文
813 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
僵哥 2008-06-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 KillSJW 的回复:]
引用 5 楼 unsigned 的回复:
晕,又来了...

UDP最好固定大小

请教一下僵哥,为什么UDP最好固定大小呢?
[/Quote]
UDP是按包来接收的,在接收端,如果你不清楚对端发来的数据有多大,那么当你缓冲区过小的时候就无法收全,甚至是无法收下报文,那么相对接收端来说,如果想要一次性就比较有保障地接收所有长度的包,那只的扩容到最大,这不也就是一个固定的大小?当然,对于发送端是可以在一定范围内控制大小。
german010 2008-06-19
  • 打赏
  • 举报
回复
我 去试验一下 再结帖
german010 2008-06-19
  • 打赏
  • 举报
回复
感谢各位的回复,特别是unsigned在此的再次回复
凌乱1980 2008-06-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 unsigned 的回复:]
引用 7 楼 KillSJW 的回复:
引用 5 楼 unsigned 的回复:
晕,又来了...

UDP最好固定大小

请教一下僵哥,为什么UDP最好固定大小呢?

UDP是按包来接收的,在接收端,如果你不清楚对端发来的数据有多大,那么当你缓冲区过小的时候就无法收全,甚至是无法收下报文,那么相对接收端来说,如果想要一次性就比较有保障地接收所有长度的包,那只的扩容到最大,这不也就是一个固定的大小?当然,对于发送端是可以在一定范…
[/Quote]
谢谢僵哥,UDP接收到的都是一个完整的报文吧?是不是就是所谓的消息边界保护?
凌乱1980 2008-06-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 unsigned 的回复:]
引用 7 楼 KillSJW 的回复:
引用 5 楼 unsigned 的回复:
晕,又来了...

UDP最好固定大小

请教一下僵哥,为什么UDP最好固定大小呢?

UDP是按包来接收的,在接收端,如果你不清楚对端发来的数据有多大,那么当你缓冲区过小的时候就无法收全,甚至是无法收下报文,那么相对接收端来说,如果想要一次性就比较有保障地接收所有长度的包,那只的扩容到最大,这不也就是一个固定的大小?当然,对于发送端是可以在一定范…
[/Quote]
谢谢僵哥,UDP接收到的都是一个完整的报文吧?是不是就是所谓的消息边界保护?
kingstarer 2008-06-18
  • 打赏
  • 举报
回复
也可以给该字符数组添加一些特殊的标记,以标识数组结束
僵哥 2008-06-18
  • 打赏
  • 举报
回复
晕,又来了...

UDP最好固定大小
mr.zhoux 2008-06-18
  • 打赏
  • 举报
回复
字符数组和不定长数组, 如何在 通过udp 接收和发送此种结构体?

你得在你的协议头部固定偏移表示你的数据包大小,方便取数据,然后发就可以了.
凌乱1980 2008-06-18
  • 打赏
  • 举报
回复

typedef struct _PLATFORM1 //数据结构
{
int err_num1;//故障代码

int sj1;
int hy1;
int zy1;
username[32];
char data[];//
} Platform1,*pPlatform1;
Platform1 p;
int len = ****;//data数组长度
send(socket,(char*)&p,sizeof(p)+len,0);
na_he 2008-06-18
  • 打赏
  • 举报
回复
struct _PLATFORM1 //数据结构
{
int err_num1;//故障代码

int sj1;
int hy1;
int zy1;
username[32];
char data[];//
} Platform1,*pPlatform1;
Platform1 Buf;
send:SendTo(&Buf, sizeof(Platform1),....);
recv:ReceiveFrom(&Buf, sizeof(Platform1),.... );
Pipi0714 2008-06-18
  • 打赏
  • 举报
回复
确定字符数组的最大长度即可。
凌乱1980 2008-06-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 unsigned 的回复:]
晕,又来了...

UDP最好固定大小
[/Quote]
请教一下僵哥,为什么UDP最好固定大小呢?

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧