当前位置:网站首页>232-CH579M学习开发-以太网例程-TCP服务器(项目应用封装,局域网或广域网测试)
232-CH579M学习开发-以太网例程-TCP服务器(项目应用封装,局域网或广域网测试)
2022-06-12 18:28:00 【杨奉武】
说明
这节演示一下开发板作为TCP服务器和电脑上位机TCP客户端局域网通信
准备个路由器或者交换机.
测试
1.使用网线连接的路由器或者交换机(和电脑连接同一个)
2.编译下载这节的程序到开发板
3.开发板上面的串口会打印开发板的IP地址
4.打开电脑TCP调试助手(安装下面这个,可以测试多路TCP客户端)
5.创建连接
IP地址填写开发板的IP地址,这个要根据上面串口打印的填写,我的是192.168.1.101
开发板TCP服务器监听的端口号是 6666
6.开发板会打印连接的客户端信息
TCP调试助手每隔一段时间会收到开发板发来的数据
7.电脑调试助手发送数据给开发板(TCP服务器)
开发板(TCP服务器)接收到什么数据就回复什么数据, 同时会把接收的信息使用串口输出,
8.再创建个客户端去连接
第二个客户端每隔一段时间收到服务器发来的数据, 其它就不测试了
程序说明
1,程序是封装好了的,我说明一下使用
2,建一个TCP服务器变量
net_tcp_server_struct net_tcp_server;
3,把net_tcp_server_data 函数放到网络事件处理函数里面
4,设置下服务器监听的端口号
5,因为是局域网,所以在DHCP回调函数里面调用TCP服务器创建函数
下面的回调函数的写法就是这样子写,里面的处理程序后面我会说明(我提供的例子是支持多路连接的,所以程序有点多)
6,客户端连接之后就会进这个里面
因为实际项目可能需要在别的给客户端发送消息,所以记录下这个socket
下面写成if判断是判断哪个变量没有使用, 就使用哪个变量去记录
如果只有一路客户端可以直接
7,接收客户端的消息
在接收里面也可以知道客户端的ip地址和端口号
printf("ip address:%d,%d,%d,%d,%ld\r\n",
SocketInf[socket_client_value->socket_id].IPAddr[0],
SocketInf[socket_client_value->socket_id].IPAddr[1],
SocketInf[socket_client_value->socket_id].IPAddr[2],
SocketInf[socket_client_value->socket_id].IPAddr[3],
SocketInf[socket_client_value->socket_id].DesPort
);8,发送消息给客户端
在接收里面直接返回的话是下面这样子写
在别的地方发送数据给客户端就需要用到先前那个变量了
注意事项
1,如果是多路客户端连接,实际上 socket1,socket2,socket3,socket4变量的记录有可能是变化的.
假设有2个客户端, 192.168.1.90 ; 192.168.1.101
一开始192.168.1.90 先连接 192.168.1.101 后连接,
现在socket1记录了192.168.1.90; socket2记录了 192.168.101
但是如果两个客户端时不时的反复的断开和连接以后, 记录就有可能变了
可能socket2记录 192.168.90 ; socket1记录 192.168.1.101
一会回来接着写...
边栏推荐
- Title 68: there are n integers, so that the previous numbers are moved backward m positions, and the last m numbers become the first m numbers
- Random talk about redis source code 90
- JS quick sort
- 在思科模拟器Cisco Packet Tracer实现自反ACL
- Basic SQL statement - select (single table query)
- Review of MySQL (3): query operation
- 联想回应笔记本太多太杂乱:现在是产品调整期 未来将分为数字/Air/ Pro三大系列
- VirtualLab基礎實驗教程-4.單縫衍射
- js两数之和
- Two months later, my second listing anniversary [June 2, 2022]
猜你喜欢

Esp32-c3 esp-idf configuring smartconfig and SNTP to obtain network time

MySQL - > > symbol usage JSON related

迄今微软不同时期发布的SQL Server各版本之间的大致区别,供参考查阅

快速复制浏览器F12中的请求到Postman/或者生成相关语言的对应代码
![Two months later, my second listing anniversary [June 2, 2022]](/img/55/6678659a552ba7dbace330d8b9c3ae.png)
Two months later, my second listing anniversary [June 2, 2022]

C language practice (4) -- multiplication and division of large numbers

VirtualLab basic experiment tutorial -6 Blazed grating

Installation and configuration of window version pytorch entry depth learning environment

js求斐波那契数列

C language learning -- data storage in memory
随机推荐
Title 37: sorting 10 numbers
Adjust CEPH cluster image source
Overall flow chart of kernel interrupt
Strings in JS (including leetcode examples) < continuous update ~>
网盘和对象云存储管理之磁盘映射工具比较
Gd32f4xx communicates with electric energy meter conforming to dlt645_ two
ES7 does not use parent-child and nested relationships to implement one to many functions
Introduction to service grid and istio - continued
2022.6.12-----leetcode.890
同花顺能开户吗,同花顺在APP上可以直接开通券商安全吗
Gd32f4xx controls dgus touch keys
Enhanced version of unit test code displayed by SAP e-commerce cloud Spartacus UI checkout spinner
Basic SQL statement - select (single table query)
JS for Fibonacci sequence
Stack in JS (including leetcode examples) < continuous update ~>
CEPH deploy offline deployment of CEPH cluster and error reporting FAQ
JS中的字符串(含leetcode例题)<持续更新~>
Can tonghuashun open an account? Can tonghuashun directly open the security of securities companies on the app
快速复制浏览器F12中的请求到Postman/或者生成相关语言的对应代码
Variable of C #