lwip tcp socket
时间: 2023-07-27 12:07:36 浏览: 49
在lwip中,TCP Socket同样是通过lwip/sockets.h头文件提供的API来实现的。要创建一个TCP Socket,可以使用以下代码:
```
#include "lwip/sockets.h"
int sockfd;
struct sockaddr_in server_addr;
// 创建Socket
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) {
printf("socket error\n");
return -1;
}
// 设置server_addr
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(8000);
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
// 绑定Socket
if (bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
printf("bind error\n");
return -1;
}
// 监听Socket
if (listen(sockfd, 5) < 0) {
printf("listen error\n");
return -1;
}
```
以上代码创建了一个TCP Socket并绑定到本地IP地址和端口号8000,然后监听该Socket,等待客户端连接。
接下来可以使用accept()函数接受客户端连接,并使用send()函数发送数据,使用recv()函数接收数据:
```
int newfd;
char buf[1024];
// 接受客户端连接
newfd = accept(sockfd, NULL, NULL);
if (newfd < 0) {
printf("accept error\n");
return -1;
}
// 发送数据
send(newfd, "hello, client\n", 14, 0);
// 接收数据
recv(newfd, buf, sizeof(buf), 0);
printf("recv: %s\n", buf);
```
以上代码接受了一个客户端连接,并向客户端发送数据"hello, client\n",然后接收客户端发送的数据并打印。