0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TCP client与TCP server该如何与PC端通信

倩倩 来源:AT32 MCU 雅特力科技 作者:AT32 MCU 雅特力科技 2022-08-18 14:49 次阅读

概述

使用TCP执行通讯时,会有Server与Client的差别。Server是经由开启特定的Port来等待来自Client端的连线需求;而Client端则是向Server端提出连线需求,此例程使用LwIP作为协议栈,可以使用tcp_bind(), tcp_listen()与tcp_accept()这三种系统呼叫来使Server端接受Client的连线要求。 本使用指南会分别说明TCP client与TCP server该如何与PC端通信

硬件资源

1) AT-START-F407 V1.0实验板 2) DM9162以太网模块 3) 以太网线

软件资源

tcp_client, TCP client源程序,运行TCP客户端程序

tcp_server, TCP server源程序,运行TCP服务端程序

AT32 TCP client/server程序设置

管脚配置

表1. 管脚配置

0f366a28-1ebb-11ed-ba43-dac502259ad0.png

LwIP设置

硬件资源只提供从PHY到MAC的信号处理,若要进行开发,则需要实作TCP/IP协议栈,在本应用中使用LwIP协议栈,该协议栈主要关注的是怎样减少减少内存的使用和程序代码的大小,这样就可以让LwIP适用于资源有限的小型平台例如嵌入式系统,更详细的内容可以访问官方网站。 由于整个协议栈已经整合到代码中,大部分的内容都无须修改,使用者只要根据自己的网段去设定IP地址及闸口地址即可,这两个全局变量宣告在netconf.c的上头。 图1. 配置芯片的IP地址

0f5251f2-1ebb-11ed-ba43-dac502259ad0.png

TCP client project设置

在初始化LwIP协议栈之后,就可以配置TCP client的应用了,芯片作为客户端是发出请求的一方,所以必须要配置往哪里发送数据,也就是说要知道服务端的socket。所谓的socket就是IP地址加上端口,在代码中我们宣告了几个宏定义代表服务端的socket,可以在tcp_client.h中找到TCP_SERVER_IP跟TCP_SERVER_PORT这两个宏定义,用户可以根据网段跟应用修改这两个宏。 图2. 配置服务端的socket

0f6a2ac0-1ebb-11ed-ba43-dac502259ad0.png

确认网段与服务端一致后,下载代码到芯片上,服务器端会一秒打印一次”tcp client experiment!”,同时LED2, 3, 4也会跟着闪烁。

上位机服务端设置

1) 设定上位机的IP地址、网路屏蔽及闸口,IP地址与闸口需要跟芯片设置在同一个网段下。 2) 打开上位机端的服务器软件,这里使用网路调适助手为例。协议类型选择TCP server,本地IP地址为代码中的TCP_SERVER_IP,本地端口号为代码中的TCP_SERVER_PORT,按下连线即建立连线。 3)连线建立后,会出现以下画面,不断打印来自TCP client的数据。 图3. 设置PC端的IP、网路屏蔽与闸口

0f834334-1ebb-11ed-ba43-dac502259ad0.png

图4. 设置服务器软件

0fa36614-1ebb-11ed-ba43-dac502259ad0.png

图5. 接收TCP client的数据

0fc532ee-1ebb-11ed-ba43-dac502259ad0.png

TCP server project设置

在初始化LwIP协议栈之后,就可以配置TCP server的应用了,芯片作为客户端是接受请求的一方,所以必须要配置在哪里接受数据,也就是说要开个端口给客户端丢数据进来。在代码中我们宣告了一个宏定义代表服务端的端口,可以在tcp_server.h中找到TCP_LOCAL_PORT这个宏定义,用户可以根据应用修改这个宏。 图6. 服务器端口的宏定义

0fd52c9e-1ebb-11ed-ba43-dac502259ad0.png

上位机客户端设置

1) 设定上位机的IP地址、网路屏蔽及闸口,IP地址与闸口需要跟芯片设置在同一个网段下,请参考图3。 2) 打开上位机端的服务器软件,这里使用网路调适助手为例。协议类型选择TCP client,服务器IP地址为芯片的IP地址,本地端口号为代码中的TCP_LOCAL_PORT,按下连线即建立连线。 3) 此时会出现讯息在视窗中,可以透过调试助手下方的区块输入字符串发送给服务器,服务器会响应输入的字符串到视窗中。 图7. 设置上位机的客户端软件

0fe4a0a2-1ebb-11ed-ba43-dac502259ad0.png

图8. 显示讯息到视窗中并响应发送的字符串

0ff6a036-1ebb-11ed-ba43-dac502259ad0.png

关于雅特力 雅特力科技于2016年成立,是一家致力于推动全球市场32位微控制器(MCU)创新趋势的芯片设计公司,专注于ARM Cortex-M4/M0+的32位微控制器研发与创新,全系列采用55nm先进工艺及ARM Cortex-M4高效能或M0+低功耗内核,缔造M4业界最高主频288MHz运算效能,并支持工业级别芯片工作温度范围(-40°~105°)。 雅特力目前已累积相当多元的终端产品成功案例:如微型打印机、扫地机、光流无人机、热成像仪、激光雷达、工业缝纫机、伺服驱控、电竞周边市场、断路器、ADAS、T-BOX、数字电源、电动工具等终端设备应用,广泛地覆盖5G物联网、消费、商务及工控等领域。
审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 以太网
    +关注

    关注

    40

    文章

    5432

    浏览量

    171893
  • 信号处理
    +关注

    关注

    48

    文章

    1031

    浏览量

    103297
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1362

    浏览量

    79119

原文标题:AT32讲堂023 | AT32 MCU TCP client与TCP server如何与PC端通信

文章出处:【微信号:AT32 MCU 雅特力科技,微信公众号:AT32 MCU 雅特力科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    百问FB网络编程 - TCP编程简单示例

    。 6.4.1 服务器代码 参考:TCP/server_line.c 1#include <stdio.h> 2#include <stdlib.h&
    发表于 12-10 09:43

    w5500 作为tcp server,客户异常发送【RST,ACK】断开连接问题

    测试1 w5500 作为tcp server,上位机labveiw程序作为clinet,正常第二次交互结束后,客户发送一个【RST,ACK】报文断开了连接; (1)使用wireshark抓取
    发表于 10-14 14:01

    Modbus(TCP)转Profinet从总线协议转换网关(JM-TCP-PN)

    大家详尽阐述设备的功能、参数以及具体的配置方式。 一,产品主要功能 1、捷米特JM-TCP-PN网关的核心功能是将Profinet协议转换为Modbus TCP协议,使得Profi
    的头像 发表于 08-16 10:14 361次阅读
    Modbus(<b class='flag-5'>TCP</b>)转Profinet从总线协议转换网关(JM-<b class='flag-5'>TCP</b>-PN)

    基于OpenHarmony轻量级操作系统实现RK2206 WiFi-AP模式通信开发案例

    实验内容 本示例将演示如何在小凌派-RK2206开发板上使用WiFi-AP模式(即将RK2206作为WiFi路由器),实现与PC进行TCP通信。 程序设计 API设计 FlashIn
    发表于 08-07 15:50

    RTOS V1.4版本SDK作为TCP Server没有调用断开连接的回调函数,为什么?

    硬件环境是:ESP-12F, 软件环境是:RTOS V1.4版本 问题描述: 模块作为STA,socket为TCP Server,当TCP Client连接到模块的
    发表于 07-18 08:31

    ESP8266作Client建立TCP连接出现报错?

    请教下,ESP8266作Client建立TCP连接,出现错误 是按照《4B-ESP8266__AT Command Examples__CN_v1.3》文档上操作的 AT+CIPSTART
    发表于 07-17 07:16

    是否可以通过TCP连接发送AT命令?

    ;lt;-------------> iot embedded module 服务器可以通过活动的TCP连接向wifi模块发送AT命令吗?例如,用例..我想通过 wifi 重置 ESP 模块 ESP - TCP 客户
    发表于 07-17 06:17

    Labview Tcp Server one to many client(TCP调试助手服务

    一直想自己做一个TCP调试助手,苦于能力有限,终于简单的功能让我给实现了,还请大家帮忙看看,指出不足,谢谢 界面未作设计,控件简单的放上去,有美工的同学可以帮忙做界面吗? 有客户连接,ip地址
    发表于 07-14 19:56

    请问TCP server如何做到在AP上侦听?

    我现在的ESP8266是AP和STA共存模式,我按照sdk及sample中的示例建了一个TCP server,我的原意是这个TCP serer要在AP上侦听的,但是我发现它却是STA接口上侦听,怎么办?
    发表于 07-12 12:51

    请问esp8266 rtos sdk能否同时启动tcp socke clent和udp server

    我在用的是V1.5的rtos 的sdk,想在esp8266上同时启动tcp的socket client和udp的socket server。 但是我发现,只要我一启动upd server
    发表于 07-12 07:07

    如何同时在ESP8266上运行TCP客户TCP服务?

    我们是 esp8266 的长期用户,并在芯片上运行数千台家庭自动化类别的现场设备。然而,一个小小的限制阻碍了我们开发一些更有趣和创新的产品。 要求:我们需要同时运行 TCP 客户(连接
    发表于 07-08 08:26

    TCP_server例程断开再次连接会失败怎么处理?

    使用了TCP_server的例程,发现当电脑作为客户端去连接esp32(服务器)断开连接之后再次连接时候连不上,发现:提示已经连接上esp32发出的热点,但是网络助手显示连接失败(监听串口失败
    发表于 06-28 06:49

    ESP32设备偶尔会出现PCTCP已经回应了数据,但ESP32不能立刻收到,为什么?

    我们使用ESP32的一个设备,最近测试中发现一个问题,偶尔会出现PCTCP已经回应了数据,但ESP32不能立刻收到,需要延迟一段时间才能收到,有时会延迟2-3秒,对设备的反应时间有
    发表于 06-19 06:12

    无线模块通过TCP/IP协议实现与PC的数据传输解析

    在当今的信息时代,无线通信技术的发展日新月异,为我们的工作和生活带来了极大的便利。其中,无线通信模块通过TCP/IP协议向PC传送数据已经
    的头像 发表于 06-15 16:16 472次阅读

    无线通信模块通过TCP/IP协议实现与PC的数据传输

    在当今的信息时代,无线通信技术的发展日新月异,为我们的工作和生活带来了极大的便利。其中,无线通信模块通过TCP/IP协议向PC传送数据已经
    的头像 发表于 05-11 15:44 661次阅读