
TCP/IP 网络组件 Lwip 之
TCPServer
RealTouch 评估板 RT‐Thread 入门文档
版本号:1.0.0
日期:2012/8/29
修订记录
日期 作者 修订历史
2012/8/29 bloom5
创建文档

实验目的
快速了解 Lwip 组件。
了解使用 TCP 协议进行网络通信的方法和过程。
硬件说明
本实验使用 RT-Thread 官方的 Realtouch 开发板作为实验平台。涉及
到的硬件主要为
RJ45 接口,作为网络连接的需要,我们需要用网线将 Realtouch
和目标机连接起来,具体请参见《Realtouch 开发板使用手册》
串口 3,作为 rt_kprintf 输出,需要连接 JTAG 扩展板
实验原理及程序结构
实验设计
本实验设计为在 RealTouch 开发板上运行 TCP Server,PC 机作为 TCP
Client,两机进行网络通信。
源程序说明
系统依赖
在 rtconfig.h 中需要开启
#define RT_USING_HEAP
此项可选,开启此项可以创建动态线程和动态信号量,如果使用静态线程和
静态信号量,则此项不是必要的
#define RT_USING_LWIP
此项必须,本实验使用 LWIP 组件,因此需要开启此项
#define RT_USING_CONSOLE
此项必须,在开始过程中仍需通过串口进行显示相关的工作
主程序说明
关于本实验,在初始化线程中完成了网络硬件的初始化,lwip 初始化,
然后启动了 TCP Server。

void rt_init_thread_entry(void* parameter)
{
#ifdef RT_USING_LWIP
/* initialize eth interface */
rt_hw_stm32_eth_init();
#endif
#ifdef RT_USING_COMPONENTS_INIT
/* initialization RT-Thread Components */
rt_components_init();
#endif
rt_platform_init();
/* do some thing here. */
tcpserv();
}
int rt_application_init()
{
rt_thread_t init_thread;
init_thread = rt_thread_create("init",
rt_init_thread_entry, RT_NULL,
2048, 8, 20);
if (init_thread != RT_NULL)
rt_thread_startup(init_thread);
return 0;
}
Tcpsrv 所有的操作均在 tcpserver.c 中的 tcpsrv()函数中完成,源码
配有详尽中文注释,可以帮助进一步你了解其工作机制。
static const char send_data[] = "This is TCP Server from
RT-Thread."; /* 发送用到的数据 */
void tcpserv(void *parameter)
{
char *recv_data; /* 用于接收的指针,后面会做一次动态分配以请求可用
内存 */
rt_uint32_t sin_size;
int sock, connected, bytes_received;
- 1
- 2
前往页