0727,学什么学,周六就应该休息!!!!!

周六就应该休息,一天就忙了两小时也不是我的错喵

目录

UDP的小总结

01:使用select实现一个基于UDP的一对一即时聊天程序。 

1.0 复读机服务器和树洞客户端

2.0 byby不了一点的敬业服务器!!!

今天到此为止!!!!

UDP的小总结

client :  socket -->            sendto / recvfrom --> close
server :  socket --> bind   --> recvfrom /sendtoint sockect (int domain,int type,int protocol);
//domain      AF_INET       AF_INET6
//type        SOCK_STREAM   SOCK_DGAM
//protocol    IPPROTO_TCP   IPPRPTP_UDPssize_t sendto (int sockfd,const void* buff,size_t len,int flags,
const struct sockaddr*dest_addr,socklen_t addrlen);ssize_t recvfrom (int sockfd,const void* buff,size_t len,int flags,
const struct sockaddr*dest_addr,socklen_t addrlen);

01:使用select实现一个基于UDP的一对一即时聊天程序。 

1.0 复读机服务器和树洞客户端
#include <func.h>
//server.c
int main()
{//addrstruct sockaddr_in addr;memset(&addr,0,sizeof(addr));addr.sin_family=AF_INET;addr.sin_port=htons(8082);addr.sin_addr.s_addr=inet_addr("192.168.235.128");socklen_t len=sizeof(addr);//soekct int sofd=socket(AF_INET,SOCK_DGRAM,0);//bindint ret=bind(sofd,(struct sockaddr*)&addr,sizeof(addr));if(ret==-1){};//readfds  old_fds fd_max buff[]fd_set readfds;fd_set old_fds;FD_SET(sofd,&readfds);//stdin server加入监听FD_SET(STDIN_FILENO,&readfds);old_fds=readfds;char buff[4096]={0};int fd_max=sofd;while(1){readfds=old_fds;select(fd_max+1,&readfds,NULL,NULL,NULL);if(FD_ISSET(sofd,&readfds)){ret=recvfrom(sofd,buff,4096,0,NULL,NULL);if(ret<0){};if(strcmp(buff,"byby\n")==0){close(sofd);}printf("----%s\n",buff);}if(FD_ISSET(STDIN_FILENO,&readfds)){memset(buff,0,sizeof(buff));fgets(buff,4096,stdin);ret=sendto(sofd,buff,strlen(buff)+1,0,(struct sockaddr*)&addr,sizeof(struct sockaddr));if(ret<0){};}}return 0;
}
#include <func.h>
//client.c
int main()
{//addrstruct sockaddr_in addr;memset(&addr,0,sizeof(addr));addr.sin_family=AF_INET;addr.sin_port=htons(8082);addr.sin_addr.s_addr=inet_addr("192.168.235.128");socklen_t len=sizeof(addr);//soekct int sofd=socket(AF_INET,SOCK_DGRAM,0);//readfds  old_fds fd_max buff[]fd_set readfds;fd_set old_fds;FD_SET(sofd,&readfds);//stdin server加入监听FD_SET(STDIN_FILENO,&readfds);old_fds=readfds;char buff[4096]={0};int fd_max=sofd;while(1){readfds=old_fds;select(fd_max+1,&readfds,NULL,NULL,NULL);if(FD_ISSET(sofd,&readfds)){recvfrom(sofd,buff,4096,0,NULL,NULL);if(strcmp(buff,"byby\n")==0){close(sofd);}printf("----%s\n",buff);}if(FD_ISSET(STDIN_FILENO,&readfds)){memset(buff,0,sizeof(buff));fgets(buff,4096,stdin);sendto(sofd,buff,strlen(buff)+1,0,(struct sockaddr*)&addr,sizeof(struct sockaddr));}}return 0;
}
2.0 byby不了一点的敬业服务器!!!

#include <func.h>
//client.c
int main()
{//addrstruct sockaddr_in addr;memset(&addr,0,sizeof(addr));addr.sin_family=AF_INET;addr.sin_port=htons(8083);addr.sin_addr.s_addr=inet_addr("192.168.235.128");socklen_t len=sizeof(addr);//soekct int sofd=socket(AF_INET,SOCK_DGRAM,0);//bindint ret=bind(sofd,(struct sockaddr*)&addr,sizeof(addr));if(ret==-1){};//readfds  old_fds fd_max buff[]fd_set readfds;fd_set old_fds;FD_SET(sofd,&readfds);//stdin server加入监听FD_SET(STDIN_FILENO,&readfds);old_fds=readfds;char buff[4096]={0};int fd_max=sofd;struct sockaddr_in cline_addr;socklen_t addr_len;while(1){readfds=old_fds;select(fd_max+1,&readfds,NULL,NULL,NULL);if(FD_ISSET(sofd,&readfds)){ret=recvfrom(sofd,buff,4096,0,(struct sockaddr*)&cline_addr,&addr_len);if(ret<0){};if(strcmp(buff,"byby")==0){close(sofd);}printf("----%s\n",buff);}if(FD_ISSET(STDIN_FILENO,&readfds)){memset(buff,0,sizeof(buff));fgets(buff,4096,stdin);ret=sendto(sofd,buff,strlen(buff)+1,0,(struct sockaddr*)&cline_addr,sizeof(struct sockaddr));if(ret<0){};}}return 0;
}

开心!!!!!!开心!!!!!!!开心!!!!!!! 
723的作业会写了喵!!!!!聪明小辉!!!

今天到此为止!!!!!

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

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

相关文章

buu做题(8)

[安洵杯 2019]easy_web 查看源代码可以发现一长串的base64编码 就是页面上的一张图片 回到原页面,url上面也有一些奇怪的参数 经过两次base64和一次hex 解密后得到 555.png 应该就是包含着页面上的这张图片 然后尝试将index.php 按照这样的方式编码, 看看能不能包含到 TmprMl…

Linux---gdb工具

目录 初步了解 gdb安装 gdb使用 初步了解 gdb是Linux中的调试器。 发布软件一般有两种方式debug和release。 debug版本&#xff1a;一般开发人员使用&#xff0c;这个版本形成的可执行程序有调试功能和调试信息&#xff0c;文件比较大。 release版本&#xff1a;一般测试人员…

夯实数字经济的“新基建”-基于大数据与区块链技术的新型基础设施

随着我国数据市场的蓬勃发展&#xff0c;构建契合数据特性、加速数据流通与价值释放的新型数据基础设施变得尤为关键。数字基础设施作为数字经济蓬勃发展的基石&#xff0c;其完善与否直接关系到数据能否有效存储、顺畅流通及高效利用&#xff0c;进而促进数据资源向数据资产的…

深度学习loss

pytorch模型训练demo代码 在PyTorch中&#xff0c;模型训练通常涉及几个关键步骤&#xff1a;定义模型、定义损失函数、选择优化器、准备数据加载器、编写训练循环。以下是一个简单的PyTorch模型训练演示代码&#xff0c;该代码实现了一个用于手写数字识别&#xff08;使用MNIS…

基于GitHub page和Hexo主题搭建个人博客(win)

1.安装git git官网下载地址&#xff1a;Git - Downloads (git-scm.com) (1)下载&#xff1a;进入官网&#xff0c;选择对应版本下载&#xff0c;得到.exe文件 (2)安装&#xff1a;打开.exe文件&#xff0c;进行如下操作 (3)安装好后&#xff0c;右击鼠标&#xff0c;点击显示…

Vue element ui分页组件示例

https://andi.cn/page/621615.html

从单个视频中重建3D场景——开启虚拟现实与数字孪生的新探索

在当今的科技前沿,人工智能与计算机视觉技术正在以前所未有的速度推动着虚拟现实(VR)、增强现实(AR)以及数字孪生(Digital Twin)领域的发展。其中,一项引人注目的研究方向是从单个视频中重建3D场景,这项技术不仅能够捕捉到场景的完整3D动态,还能处理复杂的遮挡问题,…

docker前端部署

挂载&#xff0c;把自己的目录位置&#xff0c;挂载到容器内的HTML

阿里服务器购买与java环境搭建 实践

【云服务器搭建与环境配置】 工作几年了&#xff0c;最近又买了个云服务器搭着玩一玩&#xff0c;在这里记录下搭建云服务器的过程&#xff0c;以及各种基础环境配置&#xff0c;可供初学者学习搭建云服务器的过程。 云服务器购买 这里作者搭建阿里云服务器&#xff0c;搭建…

Servlet1-Servlet程序、请求处理、继承体系

目录 什么是Servlet 手动实现Servlet程序 ​编辑url地址如何定位到Servlet程序去访问 Servlet的生命周期 ​编辑GET和POST请求的分发处理 通过继承HttpServlet类实现Servlet程序 IDEA菜单生成Servlet程序 Servlet类的继承体系 ServletConfig类 ServletContext类 什么…

【彩虹商城】虚拟发卡系统

运行环境&#xff1a; Nginx 1.22.1 Mysql5.7 PHP7.4 直接访问域名即可安装 [呵呵] 彩虹二次开发 拥有供货商系统 多余模板删除 保留一套商城,两套发卡 源码无后门隐患 已知存在的BUG修复 目前适用于卡密类型业务销售。 后续将会慢慢编写数卡权益类的对接&#xf…

神经网络的参数初始化【PyTorch】

文章目录 1、常见初始化方法2、代码2.1、导包&#xff1a;2.2、均匀分布随机初始化2.3、固定初始化2.4、全0初始化2.5、全1初始化2.6、正态分布随机初始化2.7、kaiming 初始化2.8、xavier 初始化2.9、完整代码 3、小节 &#x1f343;作者介绍&#xff1a;双非本科大三网络工程专…

科技云报道:算网筑基AI注智,中国联通如何讲出AI时代的“新故事”?

科技云报道原创。 AI从未停止进化&#xff0c;也从未停止给人类带来惊喜。 从ChatGPT代表的文生文、Dall-E代表的文生图&#xff0c;到Sora代表的文生视频&#xff0c;Suno为代表的文生音乐&#xff0c;生成式AI的“暴力美学”持续突破内容生产的天花板&#xff0c;大模型技术…

Pytorch基础:Tensor的view方法(非连续张量也可以使用view)

相关阅读 Pytorch基础https://blog.csdn.net/weixin_45791458/category_12457644.html?spm1001.2014.3001.5482 在Pytorch中&#xff0c;view是Tensor的一个重要方法&#xff0c;用于返回一个改变了形状&#xff0c;但数据和数据的顺序与原来一致的新张量&#xff0c;但是新张…

VSCode 解决 pylint 报错 No name QWidget in module PyQt5.QtWidgets

问题 启用了 VSCode 的 Pylint 插件, 即便 Python 环境中安装了 PyQt5, 也无法正确解析 PyQt5 的导入 PyQt5 底层代码是用 C/C 写的, pylint 默认不会深入解析 pylint doesn’t load any C extensions by default, because those can run arbitrary code. 解决 修改 Settings…

Spark实时(六):Output Sinks案例演示

文章目录 Output Sinks案例演示 一、​​​​​​​File sink 二、​​​​​​​​​​​​​​Memory Sink 三、​​​​​​​​​​​​​​Foreach Sink 1、​​​​​​​foreachBatch 2、​​​​​​​​​​​​​​foreach Output Sinks案例演示 当我们对流式…

kotlin协程-- 基础概念 ①|创建和使用

引言 首先先说一些相关概念 1.并发与并行 在操作系统中我们曾经学到过并发与并行 并发: 是同一个时刻只有一条指令在执行,其他指令没有再执行,但是由于CPU的时间片特别短,导致多个指令来回切换的时间间隔特别短,就好像是同一时间多条指令在执行。单核CPU与多核CPU都可以进…

【python】Python常见的面试题解析:深入探索与实践,助你少走弯路

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

若依ruoyi+AI项目二次开发(智能售货机运营管理系统)

(一) 帝可得 - 产品原型 - 腾讯 CoDesign (qq.com)

一些电脑的操作技巧,你知道吗?

我整理了几个电脑使用的实用技巧&#xff0c;能够帮你提升办公效率&#xff0c;一起来看看吧&#xff01; 技巧一&#xff1a;反方向移动单元格 一般来讲&#xff0c;我们按下【Tab】键、【Enter】键的时候&#xff0c;会切换到右边或者下边的单元格&#xff0c;想要反向移动…