大家好,今天给大家介绍嵌入式Linux网络编程入门:轻松构建网络通信,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。
为什么选择嵌入式Linux网络编程?
- 开源与自由:Linux是开源的,为开发者提供了无尽的可能性。
- 无处不在的应用:从智能家居到工业自动化,嵌入式Linux网络编程都在其中发挥着关键作用。
- 与云端的无缝连接:随着边缘计算的崛起,嵌入式设备与云端的通信变得越来越重要。
网络编程小秘密
- TCP/IP协议栈:TCP/IP协议栈是网络通信的基础,从应用层到链路层,每一层都有其特定的功能和职责。
- 套接字(Socket):套接字是网络通信的端点,用于建立客户端和服务器之间的连接。
手把手教你:构建一个简单的网络通信应用
1. TCP服务器
c复制代码
#include <stdio.h> | |
#include <stdlib.h> | |
#include <string.h> | |
#include <sys/socket.h> | |
#include <netinet/in.h> | |
#include <unistd.h> | |
#define SERVER_PORT 8888 | |
#define BUFFER_SIZE 1024 | |
int main() { | |
int server_fd, client_fd; | |
struct sockaddr_in server_addr, client_addr; | |
char buffer[BUFFER_SIZE]; | |
socklen_t client_len = sizeof(client_addr); | |
// 创建TCP套接字 | |
if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { | |
perror("socket creation failed"); | |
exit(EXIT_FAILURE); | |
} | |
// 配置服务器地址 | |
memset(&server_addr, 0, sizeof(server_addr)); | |
server_addr.sin_family = AF_INET; | |
server_addr.sin_addr.s_addr = INADDR_ANY; | |
server_addr.sin_port = htons(SERVER_PORT); | |
// 绑定套接字到服务器地址 | |
if (bind(server_fd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) { | |
perror("bind failed"); | |
exit(EXIT_FAILURE); | |
} | |
// 开始监听连接 | |
if (listen(server_fd, 5) < 0) { | |
perror("listen failed"); | |
exit(EXIT_FAILURE); | |
} | |
printf("Server listening on port %d...\n", SERVER_PORT); | |
// 接受客户端连接 | |
if ((client_fd = accept(server_fd, (struct sockaddr *)&client_addr, &client_len)) < 0) { | |
perror("accept failed"); | |
exit(EXIT_FAILURE); | |
} | |
// 接收并打印客户端发送的数据 | |
memset(buffer, 0, BUFFER_SIZE); | |
read(client_fd, buffer, BUFFER_SIZE); | |
printf("Received message: %s\n", buffer); | |
// 关闭套接字 | |
close(client_fd); | |
close(server_fd); | |
return 0; | |
} |
2. TCP客户端
c复制代码
#include <stdio.h> | |
#include <stdlib.h> | |
#include <string.h> | |
#include <sys/socket.h> | |
#include <netinet/in.h> | |
#include <unistd.h> | |
#define SERVER_IP "127.0.0.1" | |
#define SERVER_PORT 8888 | |
#define BUFFER_SIZE 1024 | |
int main() { | |
int client_fd; | |
struct sockaddr_in server_addr; | |
char buffer[BUFFER_SIZE] = "Hello, Server!"; | |
// 创建TCP套接字 | |
if ((client_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { | |
perror("socket creation failed"); | |
exit(EXIT_FAILURE); | |
} | |
// 配置服务器地址 | |
memset(&server_addr, 0, sizeof(server_addr)); | |
server_addr.sin_family = AF_INET; | |
inet_pton(AF_INET, SERVER_IP, &server_addr.sin_addr); | |
server_addr.sin_port = htons(SERVER |
嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!
分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!
点击找小助理免费领取资料
扫码进群领资料https://ad.pdb2.com/l/16QijNiGb32IFIn