news 2026/5/14 4:57:04

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【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);}

③测试结果


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/14 4:52:23

从DeepLabV3到V3+:那个被加上的Decoder,到底解决了语义分割的什么痛点?

DeepLabV3解码器设计&#xff1a;如何让语义分割重拾边界细节 当我们在Cityscapes数据集上对比DeepLabV3和V3的分割结果时&#xff0c;最明显的差异往往出现在自行车辐条、路灯杆和行人发丝这些细长物体上。传统编码器-解码器结构在追求感受野扩展的过程中&#xff0c;似乎总是…

作者头像 李华
网站建设 2026/5/14 4:52:21

终极TypeScript HTTP工具Zodios:10分钟快速上手指南

终极TypeScript HTTP工具Zodios&#xff1a;10分钟快速上手指南 【免费下载链接】zodios typescript http client and server with zod validation 项目地址: https://gitcode.com/gh_mirrors/zo/zodios Zodios是一个基于TypeScript的HTTP客户端和服务器工具&#xff0c…

作者头像 李华
网站建设 2026/5/14 4:51:06

基于钻石NV色心的量子磁传感器:原理、设计与工程实现

1. 项目概述&#xff1a;当钻石有了“瑕疵”&#xff0c;它就成了最灵敏的磁力“眼睛”在传感器领域&#xff0c;我们常常面临一个看似悖论的挑战&#xff1a;测量一个物理量&#xff0c;概念上清晰明了&#xff0c;但真要把它变成稳定、可靠、能读出具体数值的电路或系统&…

作者头像 李华
网站建设 2026/5/14 4:46:32

PixArt-Sigma实战案例:构建企业级AI图像生成平台的完整指南

PixArt-Sigma实战案例&#xff1a;构建企业级AI图像生成平台的完整指南 【免费下载链接】PixArt-sigma PixArt-Σ: Weak-to-Strong Training of Diffusion Transformer for 4K Text-to-Image Generation 项目地址: https://gitcode.com/gh_mirrors/pi/PixArt-sigma PixA…

作者头像 李华
网站建设 2026/5/14 4:45:11

轻量级中文大语言模型BlossomLM:架构、训练与部署实战

1. 项目概述&#xff1a;一个轻量级中文大语言模型的诞生最近在开源社区里&#xff0c;一个名为“Azure99/BlissomLM”的项目引起了我的注意。这名字听起来就挺有意思&#xff0c;“Blossom”是开花、绽放的意思&#xff0c;结合“LM”&#xff08;Language Model&#xff09;&…

作者头像 李华