当前位置: 首页 > news >正文

嵌入式开发学习———Linux环境下网络编程学习(一)

网络编程基础

网络编程的核心是通过套接字(Socket)实现进程间通信,分为TCP(可靠连接)和UDP(无连接)两种协议。TCP需建立连接,保证数据顺序和可靠性。

TCP服务器搭建(C语言)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>#define PORT 8080
#define BUFFER_SIZE 1024int main() {int server_fd, new_socket;struct sockaddr_in address;int opt = 1;int addrlen = sizeof(address);char buffer[BUFFER_SIZE] = {0};// 创建套接字if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {perror("socket failed");exit(EXIT_FAILURE);}// 设置套接字选项if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt))) {perror("setsockopt");exit(EXIT_FAILURE);}address.sin_family = AF_INET;address.sin_addr.s_addr = INADDR_ANY;address.sin_port = htons(PORT);// 绑定端口if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) {perror("bind failed");exit(EXIT_FAILURE);}// 监听连接if (listen(server_fd, 3) < 0) {perror("listen");exit(EXIT_FAILURE);}// 接受连接if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen)) < 0) {perror("accept");exit(EXIT_FAILURE);}// 读取客户端数据read(new_socket, buffer, BUFFER_SIZE);printf("Message from client: %s\n", buffer);// 发送响应char *response = "Hello from server";send(new_socket, response, strlen(response), 0);printf("Response sent\n");close(new_socket);close(server_fd);return 0;
}

TCP客户端搭建(C语言)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>#define PORT 8080
#define BUFFER_SIZE 1024int main() {int sock = 0;struct sockaddr_in serv_addr;char buffer[BUFFER_SIZE] = {0};// 创建套接字if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {perror("socket creation error");exit(EXIT_FAILURE);}serv_addr.sin_family = AF_INET;serv_addr.sin_port = htons(PORT);// 转换IP地址为二进制格式if (inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr) <= 0) {perror("invalid address");exit(EXIT_FAILURE);}// 连接到服务器if (connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {perror("connection failed");exit(EXIT_FAILURE);}// 发送数据char *message = "Hello from client";send(sock, message, strlen(message), 0);printf("Message sent\n");// 接收响应read(sock, buffer, BUFFER_SIZE);printf("Server response: %s\n", buffer);close(sock);return 0;
}

关键步骤说明

  • 服务器:创建套接字 → 绑定端口 → 监听连接 → 接受连接 → 读写数据。
  • 客户端:创建套接字 → 连接服务器 → 读写数据。
  • 需包含头文件arpa/inet.hsys/socket.h处理网络操作。
  • 错误检查通过perror输出,exit(EXIT_FAILURE)终止程序。

作业:
牛客网

http://www.lryc.cn/news/621442.html

相关文章:

  • 【数据分享】351个地级市农业相关数据(2013-2022)-有缺失值
  • 速通C++类型转换(代码+注释)
  • AI测试自动化:智能软件质量守护者
  • 带root权限_贝尔RG020ET-CA融合终端S905L处理器当贝纯净版刷机教程
  • ROS机器人云实践案例博客建议和范文-AI版本
  • DAY 22|算法篇——贪心四
  • linux初始化配置
  • 【Linux系统】进程的生命旅程:从创建到独立的演绎
  • vue+moment将分钟调整为5的倍数(向下取整)
  • 人工智能——卷积神经网络自定义模型全流程初识
  • 18.12 BERT问答系统核心难题:3步攻克Tokenizer答案定位与动态填充实战
  • httpx 设置速率控制 limit 时需要注意 timeout 包含 pool 中等待时间
  • C语言指针使用
  • Day57--图论--53. 寻宝(卡码网)
  • 使用免费API开发口播数字人
  • 计算机视觉Open-CV
  • 新手入门 Makefile:FPGA 项目实战教程(一)
  • 经典蓝牙(BR/EDR)配对连接全过程:从 HCI 命令到 Profile 交互
  • PHP持久连接与普通连接的区别
  • 上网行为组网方案
  • Linux软件下载菜单脚本
  • 2025 年电赛 C 题 发挥部分 1:多正方形 / 重叠正方形高精度识别与最小边长测量
  • 待办事项小程序开发
  • Multimodal RAG Enhanced Visual Description
  • 容器运行时支持GPU,并使用1panel安装ollama
  • 【嵌入式C语言】四
  • 20道前端性能优化面试题精华
  • python学习DAY41打卡
  • 低配硬件运行智谱GLM-4.5V视觉语言模型推理服务的方法
  • 《WebGL中FBO的底层运行逻辑》