工具与软件:
尊敬的团队:
我想在 AM2634评估板上实现客户端服务器集成、
目前、我使用 mcu_plus_sdk_am263x_09_02_00_56和 enet_cpsw_rawhttpserver 作为客户端实施的基本源代码、
/-------------------------------------------------------- 基本源代码------------------------------------------------------- /
while (false == App_isNetworkUp (netif_default))
{
//DebugP_log ("正在等待网络启动...\r\n");
sys_check_timeouts();
const uint32_t recvdEventsMask = App_receiveEvents (&H);
if (recvdEventsMask!= AppEventId_none)
{
APP_handleEvent (recvdEventsMask);
}
}
DebugP_LOG ("网络已启动...\r\n");
ClockP_SLEEP (1);
// AppTcp_startserver ();
// tcpecho_raw_init ();
// httpd_init (); //由于其客户端集成、因此未使用 base http app
app_altcp(); //我的客户端基本函数此函数是在最后定义的
while (1)
{
sys_check_timeouts();
ClockP_usleep (1000);
const uint32_t recvdEventsMask = App_receiveEvents (&H);
if (recvdEventsMask!= AppEventId_none)
{
APP_handleEvent (recvdEventsMask);
}
}
app_shutdownNetworkStack();
EnetApp_driverDeInit ();
EventP_破坏性(&H 事件);
返回0;
}
/--------------- 其他源代码与现有示例中的代码相同--- /
void app_altcp()
{
uint8_t 状态;
ip_addr_t myIPaddr;
IP_Addr4 (&myIPaddr、192,168、1200);
ip_addr_t DestIPaddr;
IP_Addr4 (&DestIPaddr、192,168、1、2);
pcb_altcp = altcp_new (altcpblock);
altcp_bind (pcb_altcp、&myIPaddr、2024);//与 IP 和端口绑定
status = altcp_connect (pcb_altcp、&DestIPaddr、app_port、已连接);
if (status == 0)
{
DebugP_LOG ("connect =%d \r\n"、status);
}
设计
{
altcp_close (pcb_altcp);
}
}
void connected (void * arg、struct altcp_pcb * conn、err_t err)
{
uint8_t dataptr[14]="Hello Ethernet";
uint8_t 偏差;
DebugP_LOG ("连接的数据...\r\n");
altcp_write (pcb_altcp、datptr、14、tcp_WRITE_FLAG_COPY);
altcp_recv (pcb_altcp、录制);
}
void recved (void * arg、struct altcp_pcb * conn、struct pbuf * p、err_t err)
{
静态 int k;
if ((err != ERR_OK)||(p!= NULL ))
{
/*错误或被另一侧关闭? */
if (p!= NULL)
{
K++;
/*通知 TCP 我们已获取数据。 */
altcp_recved (conn、p->tot_len);
strncpy (buffer、(char*) p->payload、p->len);
DebugP_LOG ("Buffer =%s %d\r\n"、buffer、k);
pbuf_free (p);
}
设计
{
pbuf_free (p);
}
}
}
在上面的代码中,我能够与服务器连接,并将数据发送到服务器,但问题是在接收
在接收数据中、在其进入此函数多次之后、pbuf_free 尝试释放分配的内存、但使代码崩溃、然后从 p->有效载荷复制到缓冲区。
请检查一下其中有什么问题、我在中提出了一些问题
const uint32_t recvdEventsMask = App_receiveEvents (&H);
if (recvdEventsMask!= AppEventId_none)
{
APP_handleEvent (recvdEventsMask);
请指导我如何解决此问题