【嵌入式学习】网络编程day0229

一、思维导图

二、练习

TCP通信

服务器

#include <myhead.h>
#define SER_IP "192.168.126.42"
#define SER_PORT 8888
int main(int argc, const char *argv[])
{int wfd=-1;//创建套接字if((wfd=socket(AF_INET,SOCK_STREAM,0))==-1){perror("error");return -1;}//绑定服务器网络信息struct sockaddr_in sin;sin.sin_family=AF_INET;sin.sin_port=htons(SER_PORT);sin.sin_addr.s_addr=inet_addr(SER_IP);if(bind(wfd,(struct sockaddr *)&sin,sizeof(sin))==-1){perror("error2");return -1;}//监听if(listen(wfd,128)==-1){perror("error3");return -1;}//接受客户端的连接struct sockaddr_in cin;socklen_t socklen=sizeof(cin);	int cfd=-1;if((cfd=accept(wfd,(struct sockaddr *)&cin,&socklen))==-1){perror("error3");return -1;}char str[128]="";while(1){//清空数组bzero(str,sizeof(str));//读取数据recv(cfd,str,sizeof(str),0);printf("读取数据:%s\n",str);if(strcmp(str,"quit")==0){printf("读取结束\n");break;}//修改数据strcat(str,"^_^");send(cfd,str,strlen(str),0);}close(wfd);close(cfd);return 0;
}

客户端

#include <myhead.h>
#define SER_IP "192.168.126.42"
#define SER_PORT 8888
int main(int argc, const char *argv[])
{int wfd=-1;//创建套接字if((wfd=socket(AF_INET,SOCK_STREAM,0))==-1){perror("error");return -1;}//绑定服务器网络信息struct sockaddr_in sin;sin.sin_family=AF_INET;sin.sin_port=htons(SER_PORT);sin.sin_addr.s_addr=inet_addr(SER_IP);if(connect(wfd,(struct sockaddr *)&sin,sizeof(sin))==-1){perror("error3");return -1;}char str[128]="";while(1){//清空数组bzero(str,sizeof(str));//写入数据printf("请输入:");fgets(str,sizeof(str),stdin);str[strlen(str)-1]=0;send(wfd,str,sizeof(str),0);if(strcmp(str,"quit")==0){printf("程序结束\n");break;}//读取从服务器发来的数据bzero(str,sizeof(str));recv(wfd,str,sizeof(str),0);printf("从服务器读取的数据为:%s\n",str);}close(wfd);return 0;
}

UDP通信

服务器

#include <myhead.h>
#define SER_PORT 7899
#define SER_IP "192.168.126.42"
int main(int argc, const char *argv[])
{//创建套接字int wfd=socket(AF_INET,SOCK_DGRAM,0);if(wfd==-1){perror("error");return -1;}printf("wfd=%d\n",wfd);//绑定//将服务器的网络数据绑定struct sockaddr_in sin;sin.sin_family=AF_INET;sin.sin_port=htons(SER_PORT);sin.sin_addr.s_addr=inet_addr(SER_IP);if(bind(wfd,(struct sockaddr *)&sin,sizeof(sin))==-1){perror("error");return -1;}char str[128]="";struct sockaddr_in cin;socklen_t socklen=sizeof(cin);while(1){bzero(str,sizeof(str));recvfrom(wfd,str,sizeof(str),0,(struct sockaddr *)&cin,&socklen);printf("收到得数据为:%s\n",str);	if(strcmp(str,"quit")==0){printf("程序结束\n");break;}strcat(str,"^_^");if(sendto(wfd,str,strlen(str),0,(struct sockaddr *)&cin,socklen)==-1){perror("Eroor");return -1;}}close(wfd);return 0;
}

客户端


#include <myhead.h>
#define SER_IP "192.168.126.42"
#define SER_PORT 7899
int main(int argc, const char *argv[])
{int wfd=-1;//创建套接字if((wfd=socket(AF_INET,SOCK_DGRAM,0))==-1){perror("error");return -1;}//绑定服务器网络信息struct sockaddr_in sin;sin.sin_family=AF_INET;sin.sin_port=htons(SER_PORT);sin.sin_addr.s_addr=inet_addr(SER_IP);	char str[128]="";while(1){bzero(str,sizeof(str));printf("请输入数据:");fgets(str,sizeof(str),stdin);str[strlen(str)-1]=0;sendto(wfd,str,sizeof(str),0,(struct sockaddr *)&sin,sizeof(sin));if(strcmp(str,"quit")==0){printf("程序结束\n");break;}}close(wfd);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/499572.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java程序设计】【C00323】基于Springboot的高校科研信息管理系统(有论文)

基于Springboot的高校科研信息管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的高校科研信息管理系统&#xff0c;本系统有管理员、学校管理员、科研人员三种角色&#xff1b; 管理员&#xff1a;首页、个…

插值、逼近、拟合、光顺

插值 插值&#xff08;Interpolation&#xff09;是数学和计算科学中的一个重要概念&#xff0c;它指的是通过已知的一系列数据点&#xff0c;构造一个函数或曲线&#xff0c;并据此估计未知数据点的值。这个过程通常发生在已知数据点之间&#xff0c;用于预测或估算在这些已知…

基于React, Redux实现的俄罗斯方块游戏及源码

分享一个俄罗斯方块游戏游戏框架使用的是 React Redux&#xff0c;其中再加入了 Immutable&#xff0c;用它的实例来做来Redux的state。&#xff08;有关React和Redux的介绍可以看 安装 npm install运行 npm start浏览自动打开 http://127.0.0.1:8080/ 打包编译 npm run …

Crawler爬虫基础知识

本来其实不知道爬虫的意义的&#xff0c;但是发现爬虫在信息收集的那一方面好像挺重要&#xff01;&#xff01; 那么就来浅学一下吧&#xff01;&#xff01;&#xff01; 1.基本的储备 对于爬虫&#xff0c;我们一般都是用的python去编写脚本 &#xff0c;其中还要导入…

【南方CASS干货教程】几种CASS坐标批量提取的方法

【南方CASS干货教程】几种CASS坐标批量提取的方法 文章目录 前言方法一:指定点生成数据文件方法二:批量提取高程数据总结前言 一般在土方量计算中,需要提取区域的高程数据,CASS软件提供7种坐标文件提取,地形测绘、土方量计算、断面图绘制时都需要高程数据进行模型计算,提…

【免费】两阶段鲁棒优化matlab实现——CCG和benders

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 程序采用matlab复现经典论文《Solving two-stage robust optimization problems using a column-and-constraint generation method》算例&#xff0c;实现了C&CG和benders算法两部分内容&#xff0c;通过…

DAY9-防病毒AV概述

DNS过滤 URL过滤和DNS过滤对比

OpenAI划时代大模型——文本生成视频模型Sora作品欣赏(十)

Sora介绍 Sora是一个能以文本描述生成视频的人工智能模型&#xff0c;由美国人工智能研究机构OpenAI开发。 Sora这一名称源于日文“空”&#xff08;そら sora&#xff09;&#xff0c;即天空之意&#xff0c;以示其无限的创造潜力。其背后的技术是在OpenAI的文本到图像生成模…

递归下载网页数据集

Index of /fs-det/ wget -r -p -np -k http://dl.yf.io/fs-det

外包干了两个月,让我的技术明显退步

在湖南的一个安静角落&#xff0c;我&#xff0c;一个普通的大专生&#xff0c;开始了我的软件测试之旅。四年的外包生涯&#xff0c;让我在舒适区里逐渐失去了锐气&#xff0c;技术停滞不前&#xff0c;仿佛被时间遗忘。然而&#xff0c;生活的转机总是在不经意间降临。 与女…

一张图读懂人工智能

一、生成人工智能的概念和应用&#xff0c;以及如何使用大型语言模型进行聊天和创造原创内容。这项技术将会对人类和企业产生深远影响。 计算机获得学习、思考和交流的能力&#xff0c;被称为生成人工智能。生成人工智能可以立即获得人类所有知识的总和&#xff0c;并回答任何…

lv20 QT主窗口

熟悉创建主窗口项目 1 QAction 2 主窗口 菜单栏&#xff1a;fileMenu menuBar()->addMenu(tr("&File")); 工具栏&#xff1a;fileToolBar addToolBar(tr("File")); 浮动窗&#xff1a;QDockWidget *dockWidget new QDockWidget(tr("Dock W…