社区
网络及通讯开发
帖子详情
关于缓冲区的问题,急!!
zhyuanbaron
2005-07-06 04:53:17
我定义了
DATA_BUFFER 结构体用于存放数据
PACKET_HEAD 结构体来给数据添加通信包头
想把这两个结构体都 copy 到发送缓冲区 SendBuf 中通过 socket 发送,但不知道怎么把两部分接上啊??
用 memcpy 是不是从头开始copy??能连着用两次把包头和包体接上吗?
另外:缓冲区通常设置成什么类型的?BYTE VOID 还是其他什么??这个类型与里面存放的数据有什么关系吗?
我很菜的,请大家帮帮忙啊!最好有代码
...全文
161
4
打赏
收藏
关于缓冲区的问题,急!!
我定义了 DATA_BUFFER 结构体用于存放数据 PACKET_HEAD 结构体来给数据添加通信包头 想把这两个结构体都 copy 到发送缓冲区 SendBuf 中通过 socket 发送,但不知道怎么把两部分接上啊?? 用 memcpy 是不是从头开始copy??能连着用两次把包头和包体接上吗? 另外:缓冲区通常设置成什么类型的?BYTE VOID 还是其他什么??这个类型与里面存放的数据有什么关系吗? 我很菜的,请大家帮帮忙啊!最好有代码
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
僵哥
2005-07-09
打赏
举报
回复
char buffer[MAX_BUFFER_SIZE];
memcpy(buffer,head,sizeof(PACKET_HEAD));
buffer += sizeof(PACKET_HEAD);
memcpy(buffer,data,sizeof(DATA_BUFFER));
========================================
buffer += sizeof(PACKET_HEAD);//错误代码,逻辑错误,buffer是buffer数组的头指针,若将该指针移动了,那么该数组将失去数组的意义,在此例当中将有可能会有sizeof(PACKET_HEAD)大小的内存失去管理,极其不符合逻辑。
zhyuanbaron
2005-07-09
打赏
举报
回复
如果这样定义那??
char buffer[MAX_BUFFER_SIZE];
memcpy(buffer,head,sizeof(PACKET_HEAD));
buffer += sizeof(PACKET_HEAD);
memcpy(buffer,data,sizeof(DATA_BUFFER));
buffer 是 char 类型的,head 是 PACKET_HEAD 类型的
要是不强制转换,就按上面的memcpy那样来做会不会有问题啊??
clockwise3
2005-07-09
打赏
举报
回复
ps:
缓冲区申明成什么类型不是关键的,只是分配的时候大小不同,如果你知道你存了什么东西直接强制转换
clockwise3
2005-07-09
打赏
举报
回复
DATA_BUFFER *data = new DATA_BUFFER ;
PACKET_HEAD *head = new PACKET_HEAD;
char *buffer = (char*)malloc(sizeof(DATA_BUFFER )+sizeof(PACKET_HEAD ));
memcpy(buffer,head,sizeof(PACKET_HEAD));
buffer += sizeof(PACKET_HEAD);
memcpy(buffer,data,sizeof(BUFFER));
scanf的
缓冲区
问题
本文详细解析了在使用C语言的scanf函数时遇到的
缓冲区
问题
,特别是当输入整数后,字符输入会受到回车符的影响。通过举例说明,解释了全缓冲、行缓冲和无缓冲的概念,并提供了三种解决方法:使用fflush(stdin)清除输入缓存、使用getchar()吃掉回车符或使用rewind(stdin)重置输入指针。最后,总结了处理scanf
缓冲区
问题
的策略。
ArcGIS建立
缓冲区
以及要注意的
问题
本文介绍了如何使用ArcGIS软件创建地理空间目标的
缓冲区
,包括导入shp文件、设置
缓冲区
参数等步骤,并详细解释了
缓冲区
的概念及操作选项的意义。
scanf函数及
缓冲区
问题
详解
本文详细介绍了
缓冲区
的概念、作用、类型以及在输入输出中的应用。
缓冲区
主要用于提高数据读写的效率,通过全缓冲、行缓冲和不带缓冲三种方式管理数据。在C语言中,scanf()函数在处理输入时,会遇到一些
问题
,如遇到不符合格式的数据会读取失败且保留错误数据在
缓冲区
,需要正确理解和使用以避免程序出错。同时,文章还列举了多个示例来说明scanf()的使用技巧和注意事项。
C语言中 gets( ) 的
缓冲区
溢出
问题
,慎用!!
本文详细探讨了C语言中gets()函数的使用及其潜在的安全隐患,包括
缓冲区
溢出
问题
,对比了fgets()函数的优势,并提供了实例说明。此外,还讨论了scanf()函数在处理特殊字符时的行为。
printf函数
缓冲区
问题
本文通过一个测试例子揭示了Linux下printf函数在不同情况下的
缓冲区
行为。printf的输出在全
缓冲区
、行
缓冲区
和非
缓冲区
三种模式下有不同的刷新规则。在终端输出时,由于行
缓冲区
的存在,换行符可以触发刷新,但在标准输出被重定向到文件时,printf使用全
缓冲区
,换行符不再能刷新
缓冲区
,需要手动调用fflush(stdout)来确保数据正确输出。
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章