LWIP+TCP服务器

 一、完整代码

tcp_server.c

#include "tcp_server.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

void Tcp_Server_Init(void)
{
	struct tcp_pcb *tcp_server_pcb;

	/* 为tcp服务器分配一个tcp_pcb结构体    */
	tcp_server_pcb = tcp_new();

	/* 绑定本地端号和IP地址 */
	tcp_bind(tcp_server_pcb, IP_ADDR_ANY, 8080);

	/* 监听之前创建的结构体tcp_server_pcb */
	tcp_server_pcb = tcp_listen(tcp_server_pcb);

	/* 初始化结构体接收回调函数 */
	tcp_accept(tcp_server_pcb, tcp_server_accept);
}

static err_t tcp_server_accept(void *arg, struct tcp_pcb *pcb, err_t err)
{
	/* 配置接收回调函数 */
	tcp_recv(pcb, tcp_server_recv);

    return ERR_OK;
}


static err_t tcp_server_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *tcp_recv_pbuf, err_t err)
{
	struct pbuf *tcp_send_pbuf;

	if (tcp_recv_pbuf != NULL)
	{
		/* 扩大收发数据的窗口 */
		tcp_recved(pcb, tcp_recv_pbuf->tot_len);

		/* 将接收的数据拷贝给发送结构体 */
		tcp_send_pbuf = tcp_recv_pbuf;
		
		/* 将接收到的数据再转发出去 */
		tcp_write(pcb, tcp_send_pbuf->payload, tcp_send_pbuf->len, 1);

		pbuf_free(tcp_recv_pbuf);
	}
	return ERR_OK;
}

tcp_server.h

#ifndef __TCP_SERVER_H
#define __TCP_SERVER_H


#include "lwip/debug.h"
#include "lwip/stats.h"
#include "lwip/tcp.h"
#include "lwip/memp.h"
#include "lwip/mem.h"
#include "lwip_comm.h"


void Tcp_Server_Init(void);
static err_t tcp_server_accept(void *arg, struct tcp_pcb *pcb, err_t err);
static err_t tcp_server_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *tcp_recv_pbuf, err_t err);

#endif



二、注意事项

运行一个之前已经成功的客户端代码时,如果出现设备从客户端到服务器的转变,他们会出现长时间的ping不通的情况,那么就再次执行一次下面改变主机的步骤,然后按一下复位,再次运行,就可以正常通信。

相关推荐

  1. 租用服务器提供服务

    2024-05-04 12:38:05       6 阅读
  2. RHCE 【DNS服务主从服务器

    2024-05-04 12:38:05       40 阅读
  3. 服务器自启动服务总结

    2024-05-04 12:38:05       52 阅读
  4. 服务器固件

    2024-05-04 12:38:05       33 阅读
  5. 边缘服务器

    2024-05-04 12:38:05       23 阅读
  6. 物理服务器

    2024-05-04 12:38:05       33 阅读
  7. 初始化服务器

    2024-05-04 12:38:05       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-04 12:38:05       15 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-04 12:38:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-04 12:38:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-04 12:38:05       18 阅读

热门阅读

  1. x86的开机过程(上)

    2024-05-04 12:38:05       7 阅读
  2. python经典百题之计算字符串中子串出现的次数

    2024-05-04 12:38:05       9 阅读
  3. 城市反无人机技术

    2024-05-04 12:38:05       7 阅读
  4. 算法提高之货币系统

    2024-05-04 12:38:05       9 阅读
  5. VIT(transformer在计算机视觉方面的应用)

    2024-05-04 12:38:05       10 阅读
  6. 锁定“用户人群”,远离“ 需求取舍难”

    2024-05-04 12:38:05       11 阅读
  7. SQL-慢查询的定位及优化

    2024-05-04 12:38:05       11 阅读
  8. 1、FreeCAD概述与架构

    2024-05-04 12:38:05       12 阅读
  9. mac执行python3 --version报错

    2024-05-04 12:38:05       12 阅读
  10. Spring Cloud——OpenFeign

    2024-05-04 12:38:05       12 阅读