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

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

UDP服务器客户端搭建

UDP服务器代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>#define PORT 8080
#define BUFFER_SIZE 1024int main() {int sockfd;char buffer[BUFFER_SIZE];struct sockaddr_in servaddr, cliaddr;sockfd = socket(AF_INET, SOCK_DGRAM, 0);memset(&servaddr, 0, sizeof(servaddr));memset(&cliaddr, 0, sizeof(cliaddr));servaddr.sin_family = AF_INET;servaddr.sin_addr.s_addr = INADDR_ANY;servaddr.sin_port = htons(PORT);bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));socklen_t len = sizeof(cliaddr);int n = recvfrom(sockfd, buffer, BUFFER_SIZE, 0, (struct sockaddr *)&cliaddr, &len);buffer[n] = '\0';printf("Client: %s\n", buffer);sendto(sockfd, buffer, strlen(buffer), 0, (struct sockaddr *)&cliaddr, len);return 0;
}

UDP客户端代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>#define PORT 8080
#define BUFFER_SIZE 1024int main() {int sockfd;char buffer[BUFFER_SIZE];struct sockaddr_in servaddr;sockfd = socket(AF_INET, SOCK_DGRAM, 0);memset(&servaddr, 0, sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_port = htons(PORT);servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");printf("Enter message: ");fgets(buffer, BUFFER_SIZE, stdin);sendto(sockfd, buffer, strlen(buffer), 0, (struct sockaddr *)&servaddr, sizeof(servaddr));recvfrom(sockfd, buffer, BUFFER_SIZE, 0, NULL, NULL);printf("Server: %s\n", buffer);return 0;
}

TCP并发服务器搭建

TCP并发服务器代码(多进程)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <sys/wait.h>#define PORT 8080
#define BUFFER_SIZE 1024void handle_client(int connfd) {char buffer[BUFFER_SIZE];int n = read(connfd, buffer, BUFFER_SIZE);buffer[n] = '\0';printf("Client: %s\n", buffer);write(connfd, buffer, strlen(buffer));close(connfd);
}int main() {int sockfd, connfd;struct sockaddr_in servaddr, cliaddr;socklen_t len;sockfd = socket(AF_INET, SOCK_STREAM, 0);memset(&servaddr, 0, sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_addr.s_addr = INADDR_ANY;servaddr.sin_port = htons(PORT);bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));listen(sockfd, 5);while (1) {len = sizeof(cliaddr);connfd = accept(sockfd, (struct sockaddr *)&cliaddr, &len);if (fork() == 0) {close(sockfd);handle_client(connfd);exit(0);}close(connfd);}return 0;
}

TCP客户端代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>#define PORT 8080
#define BUFFER_SIZE 1024int main() {int sockfd;char buffer[BUFFER_SIZE];struct sockaddr_in servaddr;sockfd = socket(AF_INET, SOCK_STREAM, 0);memset(&servaddr, 0, sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_port = htons(PORT);servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));printf("Enter message: ");fgets(buffer, BUFFER_SIZE, stdin);write(sockfd, buffer, strlen(buffer));read(sockfd, buffer, BUFFER_SIZE);printf("Server: %s\n", buffer);close(sockfd);return 0;
}



作业:

http://www.dtcms.com/a/332414.html

相关文章:

  • 开始回溯的学习
  • OpenSCA开源社区每日安全漏洞及投毒情报资讯|14th Aug. , 2025
  • hex文件结构速查
  • Flutter 以模块化方案 适配 HarmonyOS 的实现方法
  • 3分钟解锁网页“硬盘“能力:离线运行VSCode的新一代Web存储技术
  • 二叉树(1):二叉树的前、中、后和层次遍历
  • 《R for Data Science (2e)》免费中文翻译 (第4章) --- Workflow: code style
  • STM32L051 RTC闹钟配置详解
  • Elasticsearch:使用 Gradio 来创建一个简单的 RAG 应用界面
  • 敏捷数据开发实践:基于 Amazon Q Developer + Remote MCP 构建本地与云端 Amazon Redshift 交互体系
  • 软件重构的破与立:模式方法创新设计与工程实践
  • 【Vibe Coding 工程之 StockAnalyzerPro 记录】- EP1.先写 PRD
  • 集成电路学习:什么是Object Detection目标检测
  • 【算法专题训练】13、回文字符串
  • 另类的pdb恢复方式
  • 逆向练习(六)Andrénalin.3/4
  • Linux应用软件编程---多任务(进程2)(资源回收函数(wait、waitpid)、exec函数族、linux下的命令、const四种位置表示的含义)
  • 一周学会Matplotlib3 Python 数据可视化-绘制树形图
  • Laravel 中解决分表问题
  • ESP32-C3_SMARTCAR
  • 高并发场景下限流算法对比与实践指南
  • 【unity实战】Unity游戏开发:如何用ScriptableObject与序列化多态实现可复用的模块化效果系统?
  • ABP vNext+ WebRTC DataChannel 低延迟传感推送
  • 物联网(IoT)系统中,通信协议如何选择
  • C++——分布式
  • Al大模型-本地私有化部署大模型-大模型微调
  • 图像识别控制技术(Sikuli)深度解析:原理、应用与商业化前景
  • Zabbix【部署 01】Zabbix企业级分布式监控系统部署配置使用实例(在线安装及问题处理)程序安装+数据库初始+前端配置+服务启动+Web登录
  • 後端開發Python篇
  • StarRocks集群部署