自己配置的例程,没有改动,强制类型转换也没用
查看更多
提示的什么错误信息?
欢迎发表与嵌入式相关的技术分享、开发技巧、工具介绍、技术设想、职业心得、行业评论等对他人有启发,排版优雅的文章
回到 顶部
发布 问题
分享 好友
手机 浏览
投诉 建议
回到 底部
你刷新一下,我更新了。
@八宝粥 看见你的工程中的 rtconfig.h 中有没有定义宏
SAL_USING_POSIX
@八宝粥
另外看一下文件 rt-thread/components/net/sal_socket/include/socket/sys_socket/sys/socket.h 这部分是编译的哪部分
@crystal266 确实没有编译,现在又说dfs_file.h 文件没有。这个TCPClient还要依赖这个dfs么?
@八宝粥 dfs是文件系统相关的,如果你没用到文件系统是不需要使用的。如果你用到文件系统的话可以参考进行文件系统的移植 https://blog.csdn.net/m0_37621078/article/details/102689903
@crystal266
定义了SAL_USING_POSIX反而报错更多了,main使用的函数没定义。我想问这张图上面的api与是下面的api有啥区别,感觉是一样的啊。
@八宝粥 根据你提问中的错误的提示
sal_sendto
有一个参数传入的应该是整型,但是实际传入的是 void * 类型,不同的api传入的参数不一样,上面send
是下面的
send
是而
sal_sendto
的原型的第六个参数是socklen_t
类型,即uint32_t
类型选择的不同 上面两个
send
调用sal_sendto
的传入的参数不一样,一个是0,一个是 NULL@八宝粥 另外你用的是正点原子的潘多拉IOT的板子吗?使用的是什么wifi模块
@八宝粥 不行把你的工程传上来看看吧
@crystal266 是的,用的ESP8266
@crystal266 我把第六个参数改了改成了0,应该也没影响,不报错了。
@八宝粥 没啥影响,改完之后可以用了吗?
@八宝粥 就是传递的第六个参数的原因,导致报了你提问中的图片的错误
@crystal266 还不能用,暂时连接不上网络调试助手创建的服务器
@八宝粥 wifi连接成功了吗?使用 ifconfig 看看网络的连接状态,首先确定网络的连接状态是没问题的。另外你连接的 192.168.56.1 不是公网的IP把,找一个公网服务器试一下
@crystal266 网络连接正常。wifi连接的是手机热点,服务器用的是公司的内网。这个可以么?
@八宝粥 如果你没有公网服务器的话,RTT 官方也提供了一个公网的测试地址,在文件 rt-thread/components/net/sal_socket/src/sal_socket.c 里面。该文件提供了一个函数
check_netdev_internet_up_work
该函数继续了tcp数据收发的测试,你可以把你测试的服务器的IP和端口以及测试代码,按照 RTT 官方提供的进行测试。不过如果你使用 ifconfig 看到网络状态为 LINK_UP,就说明 esp8266 与公网已经连接成功了,这种情况下就是你自己使用网络调试助手配置的 TCP server 有问题。详细的 AT组件的分析可以参考文章 AT 组件源码分析
@八宝粥 这个是不行的,ESP8266连接的手机内网,但是你配置的 TCP 服务器在公司内网,你的 server 和 ESP8266 都不在一个网段,肯定是连接不上的,你可以 ping 一下,肯定是 ping 不通 192.168.56.1 的,但是可以 ping 通公网,比如说 www.baidu.com
@八宝粥 要不然你就用 ESP8266 连接公司的 wifi,然后把 server 也配置在公司内网上(此种情况 server 配置在公网服务器上也能行,前提是公司内网开放了相应的端口的访问)。
要不然就 ESP8266 连接手机热点,然后把 server 配置在公网的服务器上。
@crystal266 和你说的完全一样,牛皮👍👍👍
@八宝粥 共同学习❤️
@crystal266 大佬是专门RT-THread答疑的么?😊😊😊😊
@八宝粥 不是啊,只是做项目用到了 SAL 组件 和 AT 组件,当时研究的 AT 组件比较多,所以碰到 AT 组件相关的问题我都会看一下,顺顺便补充一下 AT 组件的知识,看看有哪里理解不到位的。
AT 组件源码分析 这个文章就是我总结的,我觉得调试过程中有什么问题可以参考一下,可以帮助定位到问题出现的位置。
@crystal266 好的谢谢,我可以修改电脑ip地址改到同一网段么?
@八宝粥 修改电脑IP到同一网段是什么意思?你现在 esp8266 连接的是手机热点?
是的
@八宝粥 那修改电脑的IP和手机一个网段是没用的,因为电脑连接的是公司的内网,手机连接的是基站,他俩都不在同一个局域网下。
除非说你电脑连接的也是手机的热点,ESP8266连接的也是手机的热点,这样开发板和电脑就在同一个局域网下面了。
@crystal266 我手机下载了调试助手这样就在同一网段了
@八宝粥 手机还有网络调试助手?分享一下呗,我也看看,第一次知道网络调试助手还有手机版本的
@crystal266 在同一网段了,还是连不上。我是直接在软件商店里搜的,你搜网络调试助手就有了
@八宝粥 能 ping 通吗?
用公网服务器试试呢?我还不知道手机的网络调试助手好不好用。
@八宝粥 各大云平台都可以免费试用一段时间,整个免费试用版的或者买个便宜的测试用比较方便 腾讯云产品体验
性价比超高测试用 https://cloud.tencent.com/act/pro/lighthouse2021?from=16897
@crystal266 我把电脑和ESP8266连在手机热点可以收发数据了。我有一个问题就是什么时候客户端与服务端必须在同一个网段什么时候不需要在同一个网段。
@八宝粥 都是在局域网内就需要在同一个网段下,一个在局域网另一个是公网或者两个都是公网就不用了。
@crystal266 感谢
@八宝粥 建议你看一下 NAT 的原理,就明白什么是内网什么是公网,为什么需要同一网段了。
NAT详解——详细原理
好
@八宝粥 嗯嗯,有必要了解一下内网和公网的区别,以及为什么要有内网
@八宝粥 另外,你可以免费申请一个月的云服务器试试,把网络调试助手放到云服务器上,这样更方便进行tcp的通讯测试