5194|13

6

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

STM32插上网线如何通过路由器怎么访问外网啊 [复制链接]

 

现在有一块STM32F107的开发板,按照lwip的例程已经可以和局域网内的另一台电脑进行TCP通信(用python写的server)收发数据。于是想访问互联网,比如简单的,访问一个网址获取网络时间,并且以TCP方式在win电脑上用python写的例子也是能访问成功的(网站没有挂掉),照猫画虎搬运到stm32上,为什么就收不到回信了呢?

 

网上查到的方法有说内网穿透的,有说用ESP8266连WiFi的,但是我觉得电脑或者Linux的开发板,用网线直接插在路由器上就能上网,为什么单片机就不能上网呢?所以我觉得我肯定是哪里打开的方式不对,我还需要注意哪里的设置呢,或者为什么不能访问外网呢?

 

小白实在是理解的不透彻,求大神们点拨~~

此帖出自stm32/stm8论坛

最新回复

服务器我接触不到,属于另外一个部门负责,目前我能做修改的只有路由器以及STM32的板子 而且应该不是服务器的问题,其他设备例如nano等都可以通过路由器上传数据,只有单片机不可以 目前初步怀疑问题出在单片机上,网上有说将ip和端口改为服务器的就可以,但是实测不行,只改ip和端口只能访问内网 猜测问题可能出在单片机所设置的MAC地址或网关上,奈何从来没有接触过这方面相关的知识,以至于现在只能两眼一闭,瞎找问题   详情 回复 发表于 2024-7-25 15:26
点赞 关注
 

回复
举报

1310

帖子

3

TA的资源

一粒金砂(高级)

沙发
 

要知道你访问的是外网,需要知道对方公网IP和端口,获取网络时间可以参考一下https://bbs.eeworld.com.cn/thread-1111362-1-1.html

此帖出自stm32/stm8论坛
 
个人签名

RTEMS

 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
54chenjq 发表于 2020-4-21 23:25 要知道你访问的是外网,需要知道对方公网IP和端口,获取网络时间可以参考一下https://bbs.eeworld.com.cn/th ...

获取网络时间不是目的。。我只是举个例子,换成获取今天天气,获取一个笑话都一样的。

公网IP肯定知道呀,我用电脑测试的时候ping了一下域名就知道了(并且也按照IP地址的形式写了一段TCP通讯的程序,能够访问成功)

此帖出自stm32/stm8论坛
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

4
 

顶顶

此帖出自stm32/stm8论坛
 
 
 

回复

295

帖子

1

TA的资源

版主

5
 

首先,看你通讯的方式吧,个人理解,有以下几点:

  1. 首先你能ping通(你的服务器,公网IP),说明网络连接上没问题了;
  2. 你现在板载支持TCP通讯了。那你云端搞一个tcp server,用stm32板子去通讯,应该是没问题的,可以测试一下;
  3. 如果你想要获取天气或者一个玩笑,并且这种方式是http协议,那么你在lwip的tcp基础上还得再封装一层http,另外还有post和get等请求都要注意;
此帖出自stm32/stm8论坛
 
 
 

回复

7671

帖子

18

TA的资源

五彩晶圆(高级)

6
 

tcp是4层,你要做应用,需要找对应的7层协议,比如http,ntp,ftp等移植进入lwip

此帖出自stm32/stm8论坛
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

7
 

谢谢大神们的回复,上网的问题终于解决了。。


我的连接方式是路由器A拨号上网,路由器B桥接路由器A,路由器B直插网线(为什么不路由器A直插嵌入式设备,因为距离太远,所以桥接了B)连接嵌入式设备。

 

我先实验了连接路由器A连接电脑,用python的socket,用tcp方式实现了http协议,需要配置服务器IP和端口即可。验证通过之后“照抄”到了嵌入式设备上。不过stm32的网关和子网掩码都需要自己设置,电脑连接路由器A就是A是网关,于是嵌入式连接路由器B我就把路由器B设成了网关。

 

但是今天我用电脑连接路由器B时,用ipconfig检查了一下,实际上网关还是路由器A啊!(可能B只是桥接)

 

于是后来我把网关设置为路由器A的IP之后就连接成功了!!!

 

而之前在未对网关做正确设置时,仍然能够实现局域网的tcp通讯,大概是因为连接内网不需要路由器做转发设置吧,也就是设错了也不影响;

而笔记本或Linux开发板插上网线就能上网,应该是系统自动扫描到了正确的网关地址,并自动完成配置了吧(如果手动配置成错的也是不能上网的?)

此帖出自stm32/stm8论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

8
 
hotsauce1861 发表于 2020-4-24 08:43 首先,看你通讯的方式吧,个人理解,有以下几点: 首先你能ping通(你的服务器,公网IP),说明网络 ...

谢谢大神的回复,能ping通,云端(我用的阿里云ECS)的主机服务器也没有公网IP,所以server还是直接接不到tcp连接,封装http这个我写好了,拿python验证的,后来我发现是我网关设错了!查了我好几周哎,详细说明见7楼。

此帖出自stm32/stm8论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

9
 
freebsder 发表于 2020-4-24 21:53 tcp是4层,你要做应用,需要找对应的7层协议,比如http,ntp,ftp等移植进入lwip

谢谢大神的回复,http是基于tcp这个我知道,我拿python用tcp写了一段实现http访问验证过了,后来我发现是我网关设错了!查了我好几周哎,详细说明见7楼。

此帖出自stm32/stm8论坛
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

10
 

看了老哥的帖子,我也遇到了这样的问题
遇到的问题是目前路由器可以与服务器发送数据没有问题了,但是路由器连接的下一级设备不能与服务器进行通信
请问下一级设备的子网掩码和默认网关等需要什么特别的配置吗,目前下一级设备的地址为192.168.1.126,子网掩码为255.255.255.0,默认网关为192.168.1.1
目前使用网络调试助手,配置电脑为服务器,地址为192.168.1.121时,下一级设备可发送信息至网络调试助手
但目前无法与服务器的117.62.235.20发送数据
下一级设备指的是STM32F4的板子
老哥有幸看到的话麻烦指点一二,感谢

此帖出自stm32/stm8论坛
 
 
 

回复

6107

帖子

4

TA的资源

版主

11
 
本帖最后由 damiaa 于 2024-7-25 09:04 编辑

楼上的,可以配置到同一网段试试。

此帖出自stm32/stm8论坛
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

12
 
damiaa 发表于 2024-7-25 08:57 楼上的,可以配置到同一网段试试。

您指导配置到同一网段是什么意思呢,STM32的地址是由路由器自动获取为192.168.1.121

或者您的意思是将路由器地址改为117.62.235.xxx下吗,但是目前电脑的网络调试助手通过路由器又可以与服务器进行通信

不太明白您的意思,麻烦您有时间为我详细讲解一下,特别感谢

此帖出自stm32/stm8论坛

点评

服务器能不能加一个网址设置为192.168.1.xxx ?  详情 回复 发表于 2024-7-25 15:05
 
 
 

回复

6107

帖子

4

TA的资源

版主

13
 
anylr 发表于 2024-7-25 13:56 您指导配置到同一网段是什么意思呢,STM32的地址是由路由器自动获取为192.168.1.121 或者您的意思是将 ...

服务器能不能加一个网址设置为192.168.1.xxx ?

此帖出自stm32/stm8论坛

点评

服务器我接触不到,属于另外一个部门负责,目前我能做修改的只有路由器以及STM32的板子 而且应该不是服务器的问题,其他设备例如nano等都可以通过路由器上传数据,只有单片机不可以 目前初步怀疑问题出在单片  详情 回复 发表于 2024-7-25 15:26
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

14
 
damiaa 发表于 2024-7-25 15:05 服务器能不能加一个网址设置为192.168.1.xxx ?

服务器我接触不到,属于另外一个部门负责,目前我能做修改的只有路由器以及STM32的板子

而且应该不是服务器的问题,其他设备例如nano等都可以通过路由器上传数据,只有单片机不可以

目前初步怀疑问题出在单片机上,网上有说将ip和端口改为服务器的就可以,但是实测不行,只改ip和端口只能访问内网

猜测问题可能出在单片机所设置的MAC地址或网关上,奈何从来没有接触过这方面相关的知识,以至于现在只能两眼一闭,瞎找问题

此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表