你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32如何通过路由器和PC进行以太网通讯

[复制链接]
paulkiyt 提问时间:2018-3-1 19:10 /
参考DHCP例程,路由器给开发板分配IP地址,目前已经OK
DHCP state       : SELECTING
DHCP state       : REQUESTING
DHCP state       : CHECKING
DHCP state       : BOUND
IPv4 Address     : 192.168.1.2
IPv4 Subnet mask : 255.255.255.0
IPv4 Gateway     : 192.168.1.1
现在想把PC通过网线也接到路由器,让路由器也分配一个地址,然后开发板通过分配的地址往PC发数据?请问这个如何实现?MCU怎么知道PC的IP?





收藏 1 评论10 发布时间:2018-3-1 19:10

举报

10个回答
nyszx 回答时间:2018-3-1 21:05:58
楼主要先学习下以太网相关知识,就知道该怎么做了,如果使用DHCP,动态获取IP,那如果需要建立TCP通信,那在事先约定好端口的情况下,主机必须先用UDP广播自己的IP地址,告诉从机那个地址可以连接,从机监听到后再去建立连接。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

Angel_YY 回答时间:2018-3-1 21:49:20
可以首先获取pc的MAC地址,在开发板端记录这个地址,开发板启动时发送RARP包,请求PC的MAC所对应的IP地址,路由器接收到RARP包后会返回给开发板该MAC地址所对应的IP地址,开发板就可以通过PC机的IP地址进行通讯了。
开发板和PC之间进行网络通讯,如果两者都是DHCP分配的IP地址,那么只能通过固定的MAC地址进行IP地址解析后通讯。
另ARP是IP地址解析为MAC地址,RARP是MAC地址解析为IP地址。

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

maxtch 回答时间:2018-3-1 21:50:18
如果 PC 是固定 IP,你可以把地址直接编码到程序里面,或者做成一个配置项。要不然你就需要用某种地址解析协议了。楼上所说的 UDP 广播其实不太可取,节点多了容易广播风暴。我的建议是你可以看一下 Bonjour 是怎么做的,甚至可以考虑直接做 Bonjour 协议。电脑端 Bonjour 是跨平台的:Windows 和 macOS 可以用苹果的 Bonjour 软件,Linux 下则有 Avahi。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

wudianjun2001 回答时间:2018-3-2 08:20:05
必须先有端口地址和IP地址才能进行通讯的,无论是TCP还是UDP都需要这两个东西,IP地址不是固定的话,那可以 通过MAC地址来获取IP,因为MAC地址是唯一的

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

zense 回答时间:2018-3-2 13:00:35
学习了.mark
wofei1314 回答时间:2018-3-2 13:34:53
简单的话还是直接Socket通信,可以尝试使用UDP广播,和2楼想法一样,把通信信息广播出来,接收保存,然后再用这个信息来连接

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

nyszx 回答时间:2018-3-2 15:51:59
我觉得楼主想要表达的意思就是,局域网中任意两台自动获取IP地址的网络设备能够建立点对点通信。不知理解是否正确。也就是事先IP不知道,Mac不知道的情况下实现点对点通信。如果使用RARP,实现RARP有点复杂了吧,还需要建立RARP服务器,而且通过RAPR服务器得到的IP,也不一定是期望的连接IP,因为还有其他可能的设备。UDP广播风暴在这里有点夸张了吧,又不是一直发UDP,而且也只有做主机的才发送,从机只监听约定好的端口,广播的UDP数据包含:约定的设备识别信息,如IP地址、服务端口,支持的功能等内容,从机接收到,就可以进行判断是否需要进行连接通信。UDP广播只需要端口就可以了,广播时地址为255.255.255.255。我说的这个方法绝对能满足楼主要求。还有个不推荐的笨办法就是,从1连接到254,一个一个试,但是有多个主机就麻烦了。

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

无薪税绵 回答时间:2018-3-5 13:33:42
最简单的办法就是,
你通过开发板,通过UDP向PC广播发送一组特定的数据,
然后PC中,监听特定的端口和特定的数据,
如果发现数据,马上返回握手信号,
这样就实现了通信同步了。
然后剩下的就由你来发挥了。

具体实现,必须要有相关TCP-IP的基础才行。

付:TCP-IP详解_卷1:协议.pdf
TCP-IP详解_卷1:协议.pdf (4.23 MB, 下载次数: 45)

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

呵呵平平淡淡 回答时间:2018-8-18 11:54:33
谢谢分享
12下一页
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版