为什么我在so_cconnect时为什么进不了notify的钩子函数,但是在解析域名时又能进那个钩子函数。

a363211861 2011-04-10 02:08:13
求高人指导,很奇怪就是不进那个notify函数 但是在解析域名的时候又能进解析域名的钩子函数,想来想去两者只有MSG_ID_APP_SOC_NOTIFY_IND不同,请问怎样才能让它进notify函数,不然以后都进不去,就数据也没法发送也没法接收了。
代码如下:

static kal_uint8 Soc_Notify( void *pinMsg )
{
app_soc_notify_ind_struct *soc_notify = (app_soc_notify_ind_struct*) pinMsg;

printf("\n\n In Notify \n\n");

if(soc_notify->socket_id != ER_Soc.socket_id)
{
printf("\n\n Socket id No Sam \n\n");
return 0;
}
else
{
printf("\n\n Socket id Sam \n\n");
}

printf("\n\n soc_notify->event_type = %d \n\n", &(soc_notify->event_type));

switch (soc_notify->event_type)
{
case SOC_WRITE:
break;
case SOC_READ:
break;
case SOC_CONNECT:
if( soc_notify->result == KAL_TRUE )
{
printf("\n\n Connect True \n\n");
//send request
}
else
{
printf("\n\n Connect error \n\n");
}
break;
default:
printf("\n\n event_type error \n\n");
}
return 1;

} //end Soc_Notify











MMI_BOOL Soc_Connect(int s, unsigned int *addr, int addrlen, int port)
{
sockaddr_struct sAddr;
int ret = 0;
kal_int8 sock_id = s;
kal_int16 addr_len = addrlen;

memset(&sAddr, 0, sizeof(sockaddr_struct));

// memcpy(sAddr.addr, addr,addr_len);


sAddr.addr[0]=202;
sAddr.addr[1]=108;
sAddr.addr[2]=22;
sAddr.addr[3]=103;
sAddr.port = port;
sAddr.addr_len = addr_len;
sAddr.sock_type = SOC_SOCK_STREAM;

ret = soc_connect(sock_id, &sAddr);

if( ret == SOC_SUCCESS )
{
// send request
printf("\n\n Connect Ok \n\n");
return KAL_TRUE;
}
else
if( ret == SOC_WOULDBLOCK )
{
printf("\n\n In Connect Notify \n\n");
mmi_frm_set_protocol_event_handler(MSG_ID_APP_SOC_NOTIFY_IND, (PsIntFuncPtr)ER_Soc_Notify, MMI_TRUE);
printf("\n\n Out Connect Notify \n\n ");
return KAL_TRUE;
}
else
{
printf("\n\n Connect Fail \n\n");
return KAL_FALSE;
}

} //end ER_Soc_Connect
...全文
111 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
老规矩,先看本节效果图我们实现这个支付功能完全是借助小程序云开发实现的,不用搭建自己的服务器,不用买域名,不用备案域名,不用支持https。只需要一个简单的云函数,就可以轻松的实现微信小程序支付功能。核心代码就下面这些一,创建一个云开发小程序关于如何创建云开发小程序,这里我就不再做具体讲解。不知道怎么创建云开发小程序的同学,可以去翻看我之前的文章,或者看下我录制的视频:https://edu.csdn.net/course/play/9604/204528创建云开发小程序有几点注意的1,一定不要忘记在app.js里初始化云开发环境。2,创建完云函数后,一定要记得上传二, 创建支付的云函数1,创建云函数pay三,引入三方依赖tenpay我们这里引入三方依赖的目的,是创建我们支付需要的一些参数。我们安装依赖是使用里npm 而npm必须安装node,关于如何安装node,我这里不做讲解,百度一下,网上一大堆。1,首先右键pay,然后选择在终端中打开2,我们使用npm来安装这个依赖。在命令行里执行 npm i tenpay安装完成后,我们的pay云函数会多出一个package.json 文件到这里我们的tenpay依赖就安装好了。四,编写云函数pay完整代码如下//云开发实现支付 const cloud = require('wx-server-sdk')cloud.init() //1,引入支付的三方依赖 const tenpay = require('tenpay'); //2,配置支付信息 const config = ;exports.main = async(event, context) => 一定要注意把appid,mchid,partnerKey换成你自己的。到这里我们获取小程序支付所需参数的云函数代码就编写完成了。不要忘记上传这个云函数。出现下图就代表上传成功五,写一个简单的页面,用来提交订单,调用pay云函数。这个页面很简单,1,自己随便编写一个订单号(这个订单号要大于6位)2,自己随便填写一个订单价(单位是分)3,点击按钮,调用pay云函数。获取支付所需参数。下图是官方支付api所需要的一些必须参数。下图是我们调用pay云函数获取的参数,和上图所需要的是不是一样。六,调用wx.requestPayment实现支付下图是官方的示例代码这里不在做具体讲解了,完整的可以看视频。实现效果1,调起支付键盘2,支付完成3,log日志,可以看出不同支付状态的回调上图是支付成功的回调,我们可以在支付成功回调,改变订单支付状态。下图是支付失败的回调,下图是支付完成的状态。到这里我们就轻松的实现了微信小程序的支付功能了。是不是很简单啊,完整的讲解可以看视频。

790

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 其他移动相关
社区管理员
  • 移动开发其他问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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