一、网络通讯功能
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 客户端测试程序。
程序工作流程框图如下:
TCP通信
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
(1)tl_tcp_server:TCP 服务端测试程序。
程序编译直接使用make编译即可,因为demo程序有Makefile文件
(4) tl_udp_client:UDP 客户端测试程序。
四、Demo工程文件
教程写的挺好的!