MTK Socket http连接方式流程图

MTK Socket http连接方式流程图

 

 1.创建socket连接

kal_int8 soc_create(kal_uint8  domain,

                    socket_type_enum  type,

                    kal_uint8  protocol,

                    module_type mod_id,

                    kal_uint32 nwk_account_id)

 

2.设置socket属性,设置socket非阻塞模式

kal_int8 soc_setsockopt(kal_int8 s, kal_uint16 option, kal_uint8 *val, kal_uint8 val_size)

kal_uint8 val = 1;

soc_setsockopt(socket_id,SOC_NBIO,&val, sizeof(val))

val = SOC_READ | SOC_WRITE | SOC_CLOSE | SOC_CONNECT;

soc_setsockopt(socket_id,SOC_ASYNC,&val,sizeof(val))

3.   连接中国移动网关或cmnet服务器公网ip

  kal_int8 soc_connect(kal_int8 s, sockaddr_struct *addr)

4.  回调函数

SetProtocolEventHandler(PsFuncPtr funcPtr, U16 eventID)

funcPtr里实现响应socket事件

此函数贯穿sokcet连接,发送,收取过程.合理设计并应用此函数是成功完成一次socket通信的关键

5.发送http请求

kal_int32 soc_send(kal_int8 s, kal_uint8 *buf, kal_int32 len, kal_uint8 flags)

其中buf字串需要遵守http连接协议,例如访问天气的的格式如下:

unsigned char weather_URL[]={"GET http://61.135.159.21/cgi-bin/weather?0755 HTTP/1.1\r\nHost: 61.135.159.21:80\r\nUser-Agent:*/*\r\nAccept:*/*\r\nX-Online-Host: 61.135.159.21\r\nProxy-Connection: Keep-Alive\r\n\r\n"}

6.接收数据

kal_int32 soc_recv(kal_int8 s, kal_uint8 *buf, kal_int32 len, kal_uint8 flags)

buf用来保存接收到的字符串,这里需要注意buf的长度不能超过2000,否则上真机的时候一到申请内存空间时就会死机,这里我用循环来接收信息并写入文件.

7 关闭socket连接

kal_int8 soc_close(kal_int8 s)

参数传入soc_create的返回值

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值