lwip网络通信socket_LwIP之socket应用--WebServer和Modbus TCP

本文介绍了如何在嵌入式系统中使用LwIP进行网络通信,通过示例展示了如何利用socket接口创建WebServer和Modbus TCP应用。在WebServer部分,详细阐述了从socket创建、bind、listen到accept和数据读写的流程。在Modbus TCP部分,强调了Modbus通信的特点和处理方式,并提供了简单的测试代码验证通信的正确性。
摘要由CSDN通过智能技术生成

1. 引言

LwIP是嵌入式领域一个流行的以太网协议栈, LwIP开放源码,用C写成非常方便移植,并且支持socket接口,使用者可以集中精力处理应用功能。

本文是LwIP socket的一个使用小结,使用的测试平台是stm32+enc28j60+lwip+uc/OS-II。

2. 使用socket

一个基本的socket建立顺序是:

Server端:

socket()

bind()

listen()

accept()

recv()

Client端:

socket()

connect()

send()

lwip的socket和PC上的socket接口一致,只是底层实现用lwip的API进行了封装,可以参考lwip\src\include\lwip\sockets.h。

#if LWIP_COMPAT_SOCKETS

#define accept(a,b,c) lwip_accept(a,b,c)

#define bind(a,b,c) lwip_bind(a,b,c)

#define shutdown(a,b) lwip_shutdown(a,b)

#define closesocket(s) lwip_close(s)

#define connect(a,b,c) lwip_connect(a,b,c)

#define getsockname(a,b,c) lwip_getsockname(a,b,c)

#define getpeername(a,b,c) lwip_getpeername(a,b,c)

#define setsockopt(a,b,c,d,e) lwip_setsockopt(a,b,c,d,e)

#define getsockopt(a,b,c,d,e) lwip_getsockopt(a,b,c,d,e)

#define listen(a,b) lwip_listen(a,b)

#define recv(a,b,c,d) lwip_recv(a,b,c,d)

#define recvfrom(a,b,c,d,e,f) lwip_recvfrom(a,b,c,d,e,f)

#define send(a,b,c,d) lwip_send(a,b,c,d)

#define sendto(a,b,c,d,e,f) lwip_sendto(a,b,c,d,e,f)

#define socket(a,b,c) lwip_socket(a,b,c)

#define select(a,b,c,d,e) lwip_select(a,b,c,d,e)

#define ioctlsocket(a,b,c) lwip_ioctl(a,b,c)

#if LWIP_POSIX_SOCKETS_IO_NAMES

#define read(a,b,c) lwip_read(a,b,c)

#define write(a,b,c) lwip_write(a,b,c)

#define close(s) lwip_close(s)

#define fcntl(a,b,c) lwip_fcntl(a,b,c)

#endif /* LWIP_POSIX_SOCKETS_IO_NAMES */

#endif /* LWIP_COMPAT_SOCKETS */

int socket(int domain, int type, int protocol);

服务器根据地址类型(ipv4,ipv6)、socket类型、协议创建socket。

domain:协议族,常用的有AF_INET、AF_INET6、AF_LOCAL、AF_ROUTE其中AF_INET代表使用ipv4地址

type:socket类型,常用的socket类型有,SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET等

proto

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值