[活动] 【米尔MYX-1028X】(四)网络通讯Demo

小火苗   2022-9-13 13:15 楼主

【米尔MYX-1028X】(四)网络通讯Demo

一、网络通讯功能

1.1案例功能  Demo应用来源于创龙科技

本案例主要实现客户端(client)与服务端(server)的文本数据相互收发功能。本案例包含

4 个程序: 

(1) tl_tcp_server:TCP 服务端测试程序。 

(2) tl_tcp_client:TCP 客户端测试程序。 

(3) tl_udp_server:UDP 服务端测试程序。 

(4) tl_udp_client:UDP 客户端测试程序。

程序工作流程框图如下:

image-20220913131350-1.png  

TCP通信

image-20220913131350-2.png  

UDP通信

服务端和客户端程序均可在评估板、PC 机 Ubuntu 系统上运行。

二、评估板网络配置

2.1、评估板重启后网络配置也会被重置,在ubuntu软件评估指南当中有详细的配置方法。

2.2、以太网 Ethernet

Linux 下网络配置的工具很多,常见的有 net-tools, iproute2,systemd-networkd,

network manager 以及 connman 等,这些都可以在系统定制的时候根据实际需要进行 选择,这里介绍几种常用的以太网手动临时配置和自动永久配置方式。

1) 手动临时配置以太网 IP 地址

l 使用 net-tools 工具包中的 ifconfig 对网络进行手动配置

首先通过通过 ifconfig 命令查看网络设备信息如下:

root@localhost:~# ifconfig eno0

eno0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500

inet 192.168.40.100 netmask 255.255.255.0 broadcast 192.168.40.255

ether fc:69:47:33:a5:65 txqueuelen 1000 (Ethernet)

RX packets 0 bytes 0 (0.0 B)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 0 bytes 0 (0.0 B)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

eno0 为实际的以太网设备.

下面介绍给 eno0 手动配置 IP 地址 192.168.40.100 的方法,命令如下:

root@localhost:~# ifconfig eno0 192.168.40.100 netmask 255.255.255.0 up root@localhost:~# route add default gw 192.168.40.1

上面的命令手动配置 eno0 的 IP 地址为 192.168.40.100, 子网掩码为 255.255.255.0, 以及默认配置的广播地址 192.168.40.255,并通过 up 参数进行激活,如下所示:

eno0 Link encap:Ethernet HWaddr 06:B7:A8:13:FF:64

inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0

UP BROADCAST MULTICAST MTU:1500 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

使用 iproute2 工具包中的 ip 命令对网络进行手动配置

ifconfig 命令手动设置 IP 地址的方法也可以使用 ip addr 和 ip link 进行替代,更多 的信息请查看 https://wiki.linuxfoundation.org/networking/iproute2 中的说明。

root@localhost:~# ip addr flush dev eno0

root@localhost:~# ip addr add 192.168.40.101/24 brd + dev eno0

root@localhost:~# route add default gw 192.168.40.1

root@localhost:~# ip link set eno0 up 

如果之前已经配置过 IP 地址,再使用 ip addr add 配置的 IP 地址将会成为 Secondary 地址,所以这里先使用 ip addr flush 清除之前的地址之后再进行配置然后激 活。完成配置之后,通过 ip addr show 命令查看 eno0 信息如下:

root@localhost:~# ip addr show eno0

2: eno0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state

DOWN group default qlen 1000

link/ether fc:69:47:33:a5:65 brd ff:ff:ff:ff:ff:ff

inet 192.168.40.101/24 brd 192.168.40.255 scope global eno0

valid_lft forever preferred_lft forever

DNS 设置

根据以上配置完成之后,暂时还不能连外网,可以就临时网络设置一个 DNS,编辑 /etc/resolv.conf 文件,添加下面内容:

nameserver 114.114.114.114

nameserver 8.8.8.8

l PING 测试

使用 PING 命令测试网络连通性:

root@localhost:~# ping www.baidu.com

PING www.a.shifen.com (110.242.68.4) 56(84) bytes of data.

64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=1 ttl=53 time=28.0 ms

64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=2 ttl=53 time=29.1 ms

64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=3 ttl=53 time=27.5 ms

64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=4 ttl=53 time=27.8 ms

64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=5 ttl=53 time=29.2 ms

64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=6 ttl=53 time=27.7 ms

64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=7 ttl=53 time=27.4 ms

^C --- www.a.shifen.com ping statistics ---

7 packets transmitted, 7 received, 0% packet loss, time 6004ms rtt min/avg/max/mdev = 27.442/28.143/29.221/0.695 ms

 

2) 自动永久配置以太网 IP 地址

通过 ifconfig 命令和 ip 命令配置的 IP 地址断电之后就会丢失,如果需要使 IP 地址永 久生效,就需要修改网络管理工具相应的配置文件。 MYD-J1028Xubuntu 可以使用 netplan 管理网络,这里介绍如何配置静态 ip 地址。

l 创建配置文件

进入 etc/netplan 目录,创建 netplan 配置文件如下:

root@localhost:~# cat /etc/netplan/99_config.yaml

network:

version: 2

renderer: networkd

ethernets:

eno0:

addresses: [192.168.2.105/24]

gateway4: 192.168.2.1

dhcp4: no

nameservers: search: [mydomain, otherdomain]

addresses: [10.10.10.1, 114.114.114.114]

使能 netplan

修改完配置文件后,执行下面命令使能 netplan:

root@localhost:~# netplan apply

修改完成后保存文件,然后退出编辑模式。

然后重启开发板,进入系统后可以看到上面设置的静态 IP。

root@localhost:~# ifconfig eno0

eno0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 192.168.2.105 netmask 255.255.255.0 broadcast 192.168.2.255

inet6 fe80::fe69:47ff:fe33:a565 prefixlen 64 scopeid 0x20

ether fc:69:47:33:a5:65 txqueuelen 1000 (Ethernet)

RX packets 26 bytes 2832 (2.8 KB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 31 bytes 2537 (2.5 KB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

三、Demo实际测试

(1)tl_tcp_server:TCP 服务端测试程序。 

程序编译直接使用make编译即可,因为demo程序有Makefile文件

image-20220913131350-3.png  

image-20220913131350-4.png  

  1. tl_tcp_client:TCP 客户端测试程序。 

image-20220913131350-5.png  

image-20220913131350-6.png  

  1. tl_udp_server:UDP 服务端测试程序。 

image-20220913131350-7.png  

image-20220913131350-8.png  

image-20220913131350-9.png  

(4) tl_udp_client:UDP 客户端测试程序。

 

 

image-20220913131350-10.png   image-20220913131350-11.png  

 

四、Demo工程文件

tcp_udp_demos.rar (69.66 KB)
(下载次数: 0, 2022-9-13 13:14 上传)

回复评论 (3)

谢谢分享

点赞  2022-9-14 12:14

教程写的挺好的!

点赞  2022-9-14 13:53

感谢分享

点赞  2022-9-18 10:40
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复