MTK socket 真机上能接收到数据 但是不能执行到ret == SOC_SUCCESS
1 我在真机上能接收到数据 但是不能执行到ret == SOC_SUCCESS状态( 我在此状态来判断数据接收完了) 这是为什么呀?2 接收数据的内存块大小1500字节,我接收的网页有9000多字节,我都保存在内存里,动态分配了10000字节内存(能分配成功,返回不为NULL),这样会不会导致MTK出错呀?
3 med_alloc_ext_mem 最大能分配多少内存呀?
4 还有有什么好的办法判断数据接收完了呢? --------------------编程问答-------------------- void bsl_socket_receive(void)
{
kal_int32 srcLen;
kal_int32 dstLen = BUF_SIZE;
do{
//ret = soc_recv( soc_id, (void*)(rbuf + ret1), BUF_SIZE , 0);
ret = soc_recv( soc_id, (void*)(&recvBuf), 1500 , 0);
kal_prompt_trace(MOD_MMI, "bsl_socket_receive success ret:%d:!", ret);
kal_prompt_trace(MOD_MMI, "bsl_socket_receive success &recvBuf:%s", &recvBuf);
if(ret > 0)
{
memcpy((void*)(rbuf+ret1), (const void*)&recvBuf, ret);
ret1 += ret;
}
}while(ret > 0);
if( ret == SOC_WOULDBLOCK)
{
// if(AsciiStrlen(rbuf) == 0)
// {
// SetProtocolEventHandler(bsl_socket_notify, MSG_ID_APP_SOC_NOTIFY_IND);
// return;
// }
kal_prompt_trace(MOD_MMI, "SOC_WOULDBLOCK");
SetProtocolEventHandler(bsl_socket_notify, MSG_ID_APP_SOC_NOTIFY_IND);
}else //if(ret == SOC_SUCCESS)
{
在此处判断数据接收完成
} --------------------编程问答-------------------- 3 med_alloc_ext_mem 最大能分配多少内存呀?
kal_uint8 med_ext_mem[MED_EXT_MEM_SIZE];
其大小是MED_EXT_MEM_SIZE
#define MED_EXT_MEM_SIZE (MAX_SW_JPG_YUV_BUFFER_SIZE+MAX_CAM_FILE_BUFFER_LEN+MAX_IMG_DEC_EXT_MEM_SIZE+VRSI_MEM_SIZE+AUD_PROC_MEM_SIZE+MEM_OVERHEAD+M3D_PARSE_BUFFER_SIZE)
具体的大小在 *.lis 文件中可以找到
med_ext_mem 0x08000240 Data 1181952 med_main.obj(LARGEPOOL_ZI) --------------------编程问答-------------------- --------------------编程问答-------------------- 你可以根据网页的content length来判断,如果在数据读完了,底层tcp应该要返回一个success的,否则就是底层的问题。 --------------------编程问答-------------------- ret = soc_recv( soc_id, (void*)(&recvBuf), 1500 , 0);
memcpy((void*)(rbuf+ret1), (const void*)&recvBuf, ret);
这里 写错了吧:应该是
memset(recvBuf, 0, 1500);
ret = soc_recv( soc_id, (void*)(recvBuf), 1500 , 0);
memcpy((void*)(rbuf+ret1), (const void*)recvBuf, ret);
--------------------编程问答-------------------- 一楼的了
补充:移动开发 , 移动开发其他问题