完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
void udp_server_rev(void* arg,struct udp_PCB* upcb,struct pbuf* p,struct ip_addr*addr ,u16_t port)
{ u32_t crc16_1; u32_t crc16_2; u32_t data_len=0; struct pbuf *q,*ptr; if(p!=NULL) { pbuf_free(p); fcl_control_sys[6]=0x00; fcl_control_sys[7]=0x01; fcl_control_sys[8]=0x06; fcl_control_sys[11]=0x03; fcl_control_sys[9]=(unsigned char)(CRC16_1(fcl_control_sys,9)>>8); fcl_control_sys[10]=(unsigned char)(CRC16_1(fcl_control_sys,9)); ptr=pbuf_alloc(PBUF_RAW,12,PBUF_RAW); pbuf_take(ptr,(u8*)fcl_control_sys,12); udp_sendto(upcb,ptr,addr,UDP_send_PORT); 开发板每次都返回一个指定的端口 pbuf_free(ptr); } } 开发板接收到数据之后清空,然后回应一个成功包(测试用,什么都没处理,就只分配发送包需要的内存)。我发送1.8M的mp3文件,为什么要耗时10分钟左右? PC端使用的是组播230.1.2.3地址,每次发包源端口(PC)都随机改变,开发板每次都返回一个指定的端口。 |
|
相关推荐
9个回答
|
|
bind后就不会变了。
UDP的综合性能其实是比TCP要差的。 如果你的应用逻辑是等收到ACK后再发送的下一包的话,就确实很慢了。 建议使用队列+重发的方式,这样可以少等些时间。 可以双方抓包分析,以找出原因。 另外如果是组播,ACK的作用感觉也不是很大呀。 |
|
|
|
我的校验过程挺快的,也是使用的ACK,这里提一下:收到校验命令,开始一帧一帧的返回数据,每帧数据1024字节,当PC端收到数据之后,和源数据文件进行比较,没有错误之后再发送ACK给开发板,开发板收到ACK之后再继续发送数据,直到发送完成。这个过程的速度比主题上的测试过程还快呢。测试过程只是把包仍了什么都没做为什么速度还那么慢?
|
|
|
|
|
|
|
|
有大神吗?实在是想不通啊
|
|
|
|
if(p!=NULL)
{ pbuf_free(p); if(p==NULL) { .....} 我发现pbuf_free并不能释放p,调试的过程中执行不到p==NULL里面的程序 |
|
|
|
if(p!=NULL){ pbuf_free(p); if(p==NULL) { ..... }
我发现pbuf_free并不能释放p,调试的过程中执行不到p==NULL里面的程序 这你得重修C语言了。 除非你做了 p =xx 不然p不会变(p所指向的内容可能变了) |
|
|
|
那这么说的话,最后还得来一句P=NULL?
|
|
|
|
static struct pbuf * low_level_input(struct netif *netif)
{ FrameTypeDef frame; u8 *buffer; frame = ETH_RxPkt_ChainMode(); buffer = (u8 *)frame.buffer; frame.descriptor->Status = ETH_DMARxDesc_OWN;//这里是接收描述符的一些处理。确保还能接收下一帧 if ((ETH->DMASR & ETH_DMASR_RBUS) != (u32)RESET) { ETH->DMASR = ETH_DMASR_RBUS; ETH->DMARPDR = 0; } if((buffer[30]==0xe6)&&(buffer[31]==0x01)&&(buffer[32]==0x02)&&(buffer[33]==0x03)&&(buffer[36]==0x2c)&&(buffer[37]==0x45))//判断组播地址和端口号 { buffer = (u8 *)ETH_GetCurrentTxBuffer(); memcpy(buffer,ceshi_buffer,60); //这个buffer是正确处理之后的回应包 ETH_TxPkt_ChainMode(60); } return 0; } 底层接口函数我已经改成一收到包之后就直接返回,什么都不做,为什么时间还是只有3KB/S左右? 这里给出时间和抓包软件图,证明确实是收到和发送了。希望大侠们能给点建议,为什么我的网络速度那么慢。谢谢大家了! |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2331 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2076 浏览 5 评论
2769 浏览 3 评论
2527 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2470 浏览 4 评论
541浏览 0评论
545浏览 0评论
326浏览 0评论
145浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-20 01:41 , Processed in 1.562547 second(s), Total 74, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号