前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >231-CH579M学习开发-以太网例程-TCP服务器(项目应用封装,和电脑直连测试)

231-CH579M学习开发-以太网例程-TCP服务器(项目应用封装,和电脑直连测试)

作者头像
杨奉武
发布2022-09-20 15:15:25
4140
发布2022-09-20 15:15:25
举报
文章被收录于专栏:知识分享知识分享

测试

1.默认设置如下

网关地址:192.168.1.1

子网掩码:255.255.255.0

电脑地址:192.168.1.100

开发板地址:192.168.1.200

2.可在单片机程序net_init文件中修改配置

2.修改电脑配置

关闭电脑防火墙

打开电脑的网络配置,配置下电脑

3.使用一根网线把电脑网口和开发板网口连接

5.编译下载这节的程序到开发板

提示:开发板TCP监听的端口号为:6666

6.打开电脑TCP调试助手(安装下面这个,可以测试多路TCP客户端)

7.创建连接

IP地址填写开发板的IP地址,我的是192.168.1.200

开发板TCP服务器监听的端口号是 6666

8.开发板会打印连接的客户端信息

7.电脑调试助手发送数据给开发板(TCP服务器)

开发板(TCP服务器)接收到什么数据就回复什么数据, 同时会把接收的信息使用串口输出,

8.再创建个客户端去连接(通信测试自己去测试哈)

程序说明

1,程序是封装好了的,我说明一下使用

2,建一个TCP服务器变量

net_tcp_server_struct net_tcp_server;

3,把net_tcp_server_data 函数放到网络事件处理函数里面

4,设置下服务器监听的端口号,并创建服务器

下面的回调函数的写法就是这样子写,里面的处理程序后面我会说明(我提供的例子是支持多路连接的,所以程序有点多)

6,客户端连接之后就会进这个里面

因为实际项目可能需要在别的地方给客户端发送消息,所以记录下这个socket

下面写成if判断是判断哪个变量没有使用, 就使用哪个变量去记录

如果只有一路客户端可以直接

7,接收客户端的消息

在接收里面也可以知道客户端的ip地址和端口号

代码语言:javascript
复制
    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变量的记录有可能是变化的.

假设有3个客户端, 192.168.1.90  ;  192.168.1.101 ; 192.168.1.110

一开始192.168.1.90 先连接,   192.168.1.101 后连接,

现在socket1记录了192.168.1.90;  socket2记录了 192.168.1.101

如果现在192.168.1.101断开了, 然后  192.168.1.110 连接了, 

那么现在 socket2 就会记录 192.168.1.110

如果用户确实需要有针对性的发送数据的时候,可以根据客户端的ip地址或者端口号发送数据

发送数据的时候判断下客户端的ip和端口号

假设给ip地址是192.168.1.93 端口号 4001的客户端发数据

2,整个socket的总个数是默认是4个

注意啦, TCP服务器本身就占用一个, 然后一个客户端连接占用一个, 所以默认最多支持3路客户端

如果需要多个客户端可以调大下面的值

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 测试
    • 1.默认设置如下
      • 网关地址:192.168.1.1
      • 子网掩码:255.255.255.0
      • 电脑地址:192.168.1.100
      • 开发板地址:192.168.1.200
    • 2.可在单片机程序net_init文件中修改配置
      • 2.修改电脑配置
        • 关闭电脑防火墙
        • 打开电脑的网络配置,配置下电脑
      • 3.使用一根网线把电脑网口和开发板网口连接
        • 5.编译下载这节的程序到开发板
          • 提示:开发板TCP监听的端口号为:6666
            • 6.打开电脑TCP调试助手(安装下面这个,可以测试多路TCP客户端)
              • 7.创建连接
                • IP地址填写开发板的IP地址,我的是192.168.1.200
                • 开发板TCP服务器监听的端口号是 6666
              • 8.开发板会打印连接的客户端信息
                • 7.电脑调试助手发送数据给开发板(TCP服务器)
                  • 开发板(TCP服务器)接收到什么数据就回复什么数据, 同时会把接收的信息使用串口输出,
                    • 8.再创建个客户端去连接(通信测试自己去测试哈)
                    • 程序说明
                      • 1,程序是封装好了的,我说明一下使用
                        • 2,建一个TCP服务器变量
                          • 3,把net_tcp_server_data 函数放到网络事件处理函数里面
                            • 4,设置下服务器监听的端口号,并创建服务器
                              • 下面的回调函数的写法就是这样子写,里面的处理程序后面我会说明(我提供的例子是支持多路连接的,所以程序有点多)
                            • 6,客户端连接之后就会进这个里面
                              • 因为实际项目可能需要在别的地方给客户端发送消息,所以记录下这个socket
                              • 下面写成if判断是判断哪个变量没有使用, 就使用哪个变量去记录
                              • 如果只有一路客户端可以直接
                            • 7,接收客户端的消息
                              • 在接收里面也可以知道客户端的ip地址和端口号
                            • 8,发送消息给客户端
                              • 在接收里面直接返回的话是下面这样子写
                              • 在别的地方发送数据给客户端就需要用到先前那个变量了
                          • 注意事项
                            • 1,如果是多路客户端连接,实际上 socket1,socket2,socket3,socket4变量的记录有可能是变化的.
                              • 假设有3个客户端, 192.168.1.90  ;  192.168.1.101 ; 192.168.1.110
                              • 一开始192.168.1.90 先连接,   192.168.1.101 后连接,
                              • 现在socket1记录了192.168.1.90;  socket2记录了 192.168.1.101
                              • 如果现在192.168.1.101断开了, 然后  192.168.1.110 连接了, 
                              • 那么现在 socket2 就会记录 192.168.1.110
                              • 如果用户确实需要有针对性的发送数据的时候,可以根据客户端的ip地址或者端口号发送数据
                              • 发送数据的时候判断下客户端的ip和端口号
                              • 假设给ip地址是192.168.1.93 端口号 4001的客户端发数据
                            • 2,整个socket的总个数是默认是4个
                              • 注意啦, TCP服务器本身就占用一个, 然后一个客户端连接占用一个, 所以默认最多支持3路客户端
                              • 如果需要多个客户端可以调大下面的值
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档