建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

xiaoyang1979

发帖: 5粉丝: 0

级别 : 新手上路

发消息 + 关注

发表于2020年08月10日 16:20:44 367 1
直达本楼层的链接
楼主
显示全部楼层
[问题求助] 【小熊派】IoT通信模组教程05-LiteOS的SAL及socket编程实例运行不成功

【功能模块】

按照小熊派IoT开发板系列教程的说明,

IoT通信模组教程01-AT指令玩转WIFI通信模组IoT通信模组教程04-深度剖析LiteOS的AT框架两个例子的运行都正常,用esp8266的AT指令可以与TCP服务器通信,但IoT通信模组教程05-LiteOS的SAL及socket编程的实例运行不成功,一直提示TCP Socket create fail”,请问该如何解决?


【操作步骤&问题现象】

1、代码只修改了server_ip和server_port,其余没有修改

#include <osal.h>
#include <sal.h>

#define server_port 8000
#define server_ip   "192.168.1.117"

static int sal_tcp_demo_entry()
{
int sockfd;

/* 创建TCP socket */
sockfd = sal_socket(AF_INET, SOCK_STREAM, 0);
if(sockfd < 0)
{
printf("TCP Socket create fail.\r\n");
return -1;
}
else
{
printf("TCP Socket create ok.\r\n");
}

/* 连接服务器 */
struct sockaddr_in server_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(server_port);
server_addr.sin_addr.s_addr = inet_addr(server_ip);
while(-1 == sal_connect(sockfd, (struct sockaddr*)&server_addr, sizeof(struct sockaddr)))
{
//连接失败,则1s后自动重连
printf("connect server fail, repeat...\r\n");
osal_task_sleep(1000);
}
printf("connect server ok.\r\n");
int nbytes;
char buf[] = "hello server!";
//发送数据到服务器
nbytes = sal_send(sockfd, buf, sizeof(buf), 0);
if(nbytes < 0)
{
printf("send dat %s fail.\r\n", buf);
return -1;
}
else
{
printf("send [%d] bytes: %s.\r\n", nbytes , buf);
}

//等待接收服务器数据
char recv_buf[50]={0};
while( -1 == (nbytes = sal_recv(sockfd, recv_buf, 50, 0)));
printf("recv [%d] bytes: %s.\r\n", nbytes, recv_buf);

//关闭socket
sal_closesocket(sockfd);
printf("TCP socket closed.\r\n");

return 0;
}

int standard_app_demo_main()
{
osal_task_create("sal_tcp_demo",sal_tcp_demo_entry,NULL,0x800,NULL,12);
return 0;
}

2、


【截图信息】串口的输出如下

image.png




举报
分享

分享文章到朋友圈

分享文章到微博

xiaoyang1979

发帖: 5粉丝: 0

级别 : 新手上路

发消息 + 关注

发表于2020年08月10日 21:32:26
直达本楼层的链接
沙发
显示全部楼层

问题解决了,将Makefile文件中的optimization优化级别改为Os即可

image.png

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册