当前位置: 首页 > 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.lryc.cn/news/622510.html

相关文章:

  • STC8单片机驱动I2C屏幕:实现时间、日期与温湿度显示
  • AutoSar AP平台功能组并行运行原理
  • 码上爬第七题【协程+对抗格式化检测+数组移位】
  • 【Canvas与玻璃光】铝圈蓝底玻璃光按钮
  • 吉他和弦学习:从音程基石到流畅弹奏
  • 优先级反转问题
  • 在使用 scp 传输大文件时,为避免因连接超时导致传输中断
  • 领域防腐层(ACL)在遗留系统改造中的落地
  • python中的reduce函数
  • MSYS2+CMake配置C/C++开发环境
  • OpenSCA开源社区每日安全漏洞及投毒情报资讯|14th Aug. , 2025
  • plantsimulation中存储(store)、缓冲区(buffer)、放置缓冲区(PlaceBuffer)的区别,分别应用于那种情况
  • OpenCompass傻瓜式入门教程
  • linux-数据链路层
  • 博弈论06——PPAD复杂度问题
  • JAVA-DAY7-面向对象进阶
  • 从0开始跟小甲鱼C语言视频使用linux一步步学习C语言(持续更新)8.15
  • Java研学-SpringCloud(三)
  • Erlang notes[2]
  • Shortest Routes II(Floyd最短路)
  • 数据结构:二叉树的表示方式(Representation of Binary Trees)
  • 【100页PPT】数字化转型集团信息化总体解决方案(附下载方式)
  • UI-TARS-Desktop 产品发展史:从实验室原型到企业级解决方案
  • gulimall项目笔记:P54三级分类拖拽功能实现
  • 深入理解C++正则表达式:从基础到实践
  • ramdisk内存虚拟盘(一)——前世今生
  • Python爬取推特(X)的各种数据
  • 功能组和功能组状态的概念关系和区别
  • 【揭秘红黑树:高效数据结构解析】
  • 谈谈《More Effective C++》的条款30:代理类