3.TCP回响服务器实现及源码分析上

1.tcp_echoserver.c 移植

文件目录

C:\Users\Think\STM32Cube\Repository\STM32Cube_FW_F4_V1.24.1\Projects\STM324xG_EVAL\Applications\LwIP\LwIP_TCP_Echo_Server\Src

地址是本机的,端口号是7

2.实验分析

1.移植tcp_echoserver.c文件

2.main.c添加tcp_echoserver_init

3.编译烧写

4.使用NC命令进行连接

5.发送任意数据等待回响

3.tcp_echoserver 业务分析

复制代码
static struct tcp_pcb *tcp_echoserver_pcb;

/* ECHO protocol states */
enum tcp_echoserver_states
{
  ES_NONE = 0,
  ES_ACCEPTED,
  ES_RECEIVED,
  ES_CLOSING
};

/* structure for maintaing connection infos to be passed as argument 
   to LwIP callbacks*/
struct tcp_echoserver_struct
{
  u8_t state;             /* current connection state */
  u8_t retries;
  struct tcp_pcb *pcb;    /* pointer on the current tcp_pcb */
  struct pbuf *p;         /* pointer on the received/to be transmitted pbuf */
};

void tcp_echoserver_init(void);
static err_t tcp_echoserver_accept(void *arg, struct tcp_pcb *newpcb, err_t err);
static err_t tcp_echoserver_recv(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err);
static void tcp_echoserver_error(void *arg, err_t err);
static err_t tcp_echoserver_poll(void *arg, struct tcp_pcb *tpcb);
static err_t tcp_echoserver_sent(void *arg, struct tcp_pcb *tpcb, u16_t len);
static void tcp_echoserver_send(struct tcp_pcb *tpcb, struct tcp_echoserver_struct *es);
static void tcp_echoserver_connection_close(struct tcp_pcb *tpcb, struct tcp_echoserver_struct *es);
相关推荐
竹照煜_ysn11 分钟前
STM32——WDG看门狗
stm32·单片机·嵌入式硬件
DS小龙哥22 分钟前
基于华为云的STM32F103C8T6智能停车场管理系统
大数据·stm32·华为云
学习噢学个屁1 小时前
基于STM32智能阳台监控系统
c语言·stm32·单片机·嵌入式硬件
Darenm1111 小时前
计算机⽹络及TCP⽹络应⽤程序开发
网络·网络协议·tcp/ip
糖糖单片机设计1 小时前
硬件开发_基于物联网的老人跌倒监测报警系统
stm32·单片机·嵌入式硬件·物联网·51单片机
兰雪簪轩8 小时前
分布式通信平台测试报告
开发语言·网络·c++·网络协议·测试报告
只因在人海中多看了你一眼11 小时前
B.50.10.09-RPC核心原理与电商应用
qt·网络协议·rpc
小鸟啄米12 小时前
Elixir通过Onvif协议控制IP摄像机,扩展ExOnvif的摄像头停止移动 Stop 功能
网络协议·elixir·onvif
东亚_劲夫12 小时前
STM32—SPI协议
stm32·单片机·嵌入式硬件
爱的si念12 小时前
嵌入式ARM64 基于RK3588原生SDK添加用户配置选项./build lunch & debian
linux·debian·嵌入式