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

【ZYNQ的Linux开发】网络socket编程

Linux的网络socket编程

(1)TCP客户端

①代码

#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<string.h>#include<sys/types.h>#include<sys/socket.h>#include<arpa/inet.h>#include<netinet/in.h>#defineSERVER_PORT5000#defineSERVER_IP"192.168.1.10"intmain(void){structsockaddr_inserver_addr={0};unsignedcharbuf[512];intsockfd;intret;unsignedcharrecbuf[512];for(inti=0;i<512;i++){buf[i]=i%256;}sockfd=socket(AF_INET,SOCK_STREAM,0);if(0>sockfd){perror("socket error");exit(EXIT_FAILURE);}server_addr.sin_family=AF_INET;server_addr.sin_port=htons(SERVER_PORT);inet_pton(AF_INET,SERVER_IP,&server_addr.sin_addr);//连接客户端ret=connect(sockfd,(structsockaddr*)&server_addr,sizeof(server_addr));if(ret<0){perror("connect error");close(sockfd);exit(EXIT_FAILURE);}printf("connect ok\n\n");//发数据ret=send(sockfd,buf,sizeof(buf),0);if(0>ret){perror("send error");}//收数据memset(recbuf,0x00,sizeof(recbuf));ret=recv(sockfd,recbuf,sizeof(recbuf),0);if(0>ret){perror("recv error");}if(recbuf[0]==0xFF){printf("over\n");}close(sockfd);exit(EXIT_FAILURE);}

②测试结果

(2)TCP服务端

①代码

#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<string.h>#include<sys/types.h>#include<sys/socket.h>#include<arpa/inet.h>#include<netinet/in.h>#defineSERVER_PORT5000#defineSERVER_IP"192.168.1.8"intmain(void){structsockaddr_inserver_addr={0};structsockaddr_inclient_addr={0};charip_str[20]={0};unsignedcharbuf[512];intsockfd,connfd;intret;socklen_taddrled=sizeof(client_addr);unsignedcharrecbuf[512];for(inti=0;i<512;i++){buf[i]=i%256;}sockfd=socket(AF_INET,SOCK_STREAM,0);if(0>sockfd){perror("socket error");exit(EXIT_FAILURE);}server_addr.sin_family=AF_INET;server_addr.sin_port=htons(SERVER_PORT);//server_addr.sin_addr.s_addr=htonl(INADDR_ANY);inet_pton(AF_INET,"SERVER_IP",&server_addr.sin_addr);//绑定IPret=bind(sockfd,(structsockaddr*)&server_addr,sizeof(server_addr));if(ret<0){perror("bind error");close(sockfd);exit(EXIT_FAILURE);}//监听端口ret=listen(sockfd,50);if(ret<0){perror("listen error");close(sockfd);exit(EXIT_FAILURE);}//阻塞等待被连接connfd=accept(sockfd,(structsockaddr*)&client_addr,&addrled);if(connfd<0){perror("accept error");close(sockfd);exit(EXIT_FAILURE);}printf("coming...\n");inet_ntop(AF_INET,&client_addr.sin_addr.s_addr,ip_str,sizeof(ip_str));printf("%s\n",ip_str);//发送数据ret=send(connfd,buf,sizeof(buf),0);if(0>ret){perror("send error");}//接收数据memset(recbuf,0x00,sizeof(recbuf));ret=recv(connfd,recbuf,sizeof(recbuf),0);if(0>ret){perror("recv error");}if(recbuf[0]==0xFF){printf("over\n");}close(connfd);close(sockfd);exit(EXIT_FAILURE);}

③测试结果


http://www.jsqmd.com/news/813225/

相关文章:

  • Rust DSL BeeClaw:为无人机控制打造的高性能领域特定语言
  • Openclaw-Bootstrapping-Benchmark:AI智能体自举能力评估框架详解
  • 美发行业SaaS系统设计:预约冲突检测与库存管理核心技术解析
  • 解决云服务器安装VSCode Go插件失败/一直是installing问题
  • 开发者效率革命:用dotfiles打造可移植的个性化开发环境
  • ARM MPAM内存带宽分区技术详解与实战配置
  • 【限时开放】ChatGPT支付功能内测权限获取教程:仅剩83个企业认证名额,含Stripe+支付宝双网关配置密钥
  • 用RCWL-0516微波雷达模块DIY一个智能感应小夜灯(附Arduino代码)
  • 146.轻量化部署口罩检测!YOLOv8 模型导出(ONNX/TensorRT)实战教程
  • 终极指南:OR-Tools启发式评估函数设计——快速掌握搜索方向引导技巧
  • OpenCore Legacy Patcher深度技术解析:古董Mac硬件兼容性原理与系统补丁机制
  • Arm调试寄存器DBGDSAR详解与架构演进
  • 触发器如何在主从架构下进行同步_基于Row格式的Binlog规避触发器
  • 为AI智能体构建机构级交易基础设施:TradeOS架构与安全实践
  • 虚拟机没网络,主机有网络
  • Go语言高性能混合向量数据库Comet:架构、索引与实战指南
  • 【紧急通告】DeepSeek-R1毒性分类器存在语境盲区?3小时内验证并热修复的4种API级补丁
  • mysql数据库响应缓慢如何排查_使用EXPLAIN分析执行计划
  • Windows上安装APK的终极指南:告别模拟器,5步实现安卓应用无缝运行
  • 交叉编译curl(OpenSSL)移植ARM详细步骤
  • OpenMP与Rust Rayon并行计算性能对比分析
  • QConf灰度发布策略详解:零风险配置变更的完整方案
  • FastAPI脚手架:现代Python API开发的最佳实践与工程化指南
  • 终极nDreamBerd自动化测试框架指南:从单元测试到E2E的完整实践
  • Kubernetes网络监控安全加固终极指南:Kubeshark RBAC权限配置与敏感信息保护
  • 147.YOLOv8 vs YOLOv5 核心差异 + 缺陷检测完整代码,从原理到落地一步到位
  • 2026年口碑好的防盗门定制门/入户定制门高口碑品牌推荐 - 品牌宣传支持者
  • 如何快速解密网易云NCM文件:3步实现音乐格式自由转换
  • Windows开发环境一键配置终极指南:15分钟搭建完整Web开发环境
  • Kubernetes自主运维智能体:从Operator模式到AI驱动的自动化实践