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

news2024/11/20 20:31:38

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

目录

UDP的小总结

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

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

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

今天到此为止!!!!

UDP的小总结

client :  socket -->            sendto / recvfrom --> close
server :  socket --> bind   --> recvfrom /sendto

int sockect (int domain,int type,int protocol);
//domain      AF_INET       AF_INET6
//type        SOCK_STREAM   SOCK_DGAM
//protocol    IPPROTO_TCP   IPPRPTP_UDP

ssize_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()
{
    //addr
    struct 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);
    //bind
    int 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()
{
    //addr
    struct 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()
{
    //addr
    struct 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);
    //bind
    int 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.coloradmin.cn/o/1954696.html

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

相关文章

Vue2.

vue2 模版语法 插值语法 标签体内容 指令语法 标签属性 v-bind: >> : 绑定 数据绑定 el与data的两种写法 理解MVVM模型 vue实例对象中的_proto_属性内 是 vue原型对象上的方法 数据代理 回顾object.defineproperty方法 数据代理定义&#xff1a; vue中的数据…

dify(docker)配置域名访问配置https

1. 要把证书放到 容器里面 放到nginx的目录里面 这个是在windows下 如果在Linux下 先上传到Linux服务器上然后复制到容器里面 docker-nginx-1 为容器的名字 2. 修改conf.d 里面的 default.conf 配置文件 把注释的代码放出来 3. 修改yaml文件 修改dify-main\docker下…

react中useReducer钩子函数的使用

1.代码展示 import { useReducer } from "react"// 1.定义reducer函数&#xff0c;根据不同action返回不同状态 function reducer(state, action) {console.log(state, action);switch (action.type) {case "INC":return state 1break;case "DEC&qu…

【黑科技】:Laravel 项目性能提升 20 倍

令人激动的黑科技&#xff1a;Laravel 项目性能提升 20 倍 这个项目能够在无需修改任何代码且无需第三方扩展的前提下&#xff0c;将你的 Laravel 项目性能提高 20 倍。它仅依赖于 PHP 原生的 pcntl、posix、fiber 和 sockets。 项目灵感 起因是看到官方发布的 PHP 8.1 更新…

CTF-NSSCTF[NISACTF 2022]

[NISACTF 2022]middlerce 考察&#xff1a;正则匹配回溯绕过 这里使用的是正则匹配的NIF匹配引擎,这个匹配引擎的原理是基于从后往前回溯的匹配机制 NIF匹配机制 当preg_match这个函数进行匹配时是匹配完后才根据匹配到与否来返回bool值 如果匹配到也要匹配完后才返回true,…

linux mysql 定时备份

1、创建备份文件夹 cd /homemkdir backup2、创建脚本文件 vim bkDatabaseName.sh加入以下内容&#xff08;/xp/server/mysql/bin/mysqldump是你的mysqldump备份命令&#xff0c;一般如果是正常安装的&#xff0c;可以直接用全局命令mysqldump&#xff0c;不用带前面的路径&am…

【前端 02】新浪新闻项目-初步使用CSS来排版

在今天的博文中&#xff0c;我们将围绕“新浪新闻”项目&#xff0c;深入探讨HTML和CSS在网页制作中的基础应用。通过具体实例&#xff0c;我们将学习如何设置图片、标题、超链接以及文本排版&#xff0c;同时了解CSS的引入方式和选择器优先级&#xff0c;以及视频和音频标签的…

19.延迟队列优化

问题 前面所讲的延迟队列有一个不足之处&#xff0c;比如现在有一个需求需要延迟半个小时的消息&#xff0c;那么就只有添加一个新的队列。那就意味着&#xff0c;每新增一个不同时间需求&#xff0c;就会新创建一个队列。 解决方案 应该讲消息的时间不要跟队列绑定&#xf…

介绍一款适合于程序员的手机浏览器

DT浏览器是一款适合于程序员的手机浏览器&#xff0c;主要功能有&#xff0c;资料分类收藏&#xff0c;图片资料转文字&#xff0c;智能问答&#xff0c;视频资料管理和播放&#xff0c;笔记本&#xff0c; DT浏览器使用教程之如何查空气质量&#xff0c; 在DT浏览器首页点空…

谷粒商城实战笔记-75-商品服务-API-品牌管理-品牌分类关联与级联更新

文章目录 一&#xff0c;引入Mybatis Plus分页插件二&#xff0c;品牌列表的模糊查询三&#xff0c;增加品牌测试数据四&#xff0c;开发后台品牌关联分类接口1&#xff0c;接口product/categorybrandrelation/catelog/list2&#xff0c;接口product/categorybrandrelation/sav…

第03课 Scratch入门篇: 键盘控制小猫

键盘控制小猫 入门篇适合新手&#xff0c;如您已经学过&#xff0c;可以忽略本节课&#xff01; 1、故事背景&#xff1a; 悠闲的小猫在舞台中散步&#xff0c;左左右右&#xff0c;上上下下… 2、实现原理&#xff1a; 让我们一起分析下&#xff0c;如何通过程序来…

Java 字符串 HashCode 的奇怪情况

过去 1.5 年以来&#xff0c;我一直在使用 Java 编程。最近&#xff0c;我在尝试对 Java 数据结构进行性能分析。为了亲自体验一下&#xff0c;我决定玩一下我最喜欢的数据结构&#xff0c;即 HashSet。HashSet 提供 O(1) 查找和插入时间。我测量并比较了在 HashSet 中查找具有…

kafka高性能的底层原理分析

目录 1.磁盘顺序写 2.零拷贝 3.数据压缩 4.消息批量处理 5.pageCache 6.稀疏索引 总结 Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff0c;它可以处理消费者在网站中的所有动作流数据。那么他是如何做到高性能的呢&#xff0c;本篇文章从宏观上分析一下&#xff…

论文阅读——Design of Environmental backscatter tag antenna for 5G Internet of things

文章目录 摘要一、背景二、系统模型三、天线设计A. 指标B. 天线结构描述C. 天线结构优化D. 天线结构确定 四、仿真结果总结 论文来源&#xff1a;https://ieeexplore.ieee.org/document/9379395 摘要 文章针对传统设备识别在电力物联网场景中存在的可靠性低和读取距离不足的问…

2024年陕西省职业院校技能大赛高职信息安全管理与评估样题

2024年陕西省职业院校技能大赛高职信息安全管理与评估样题 模块一竞赛项目试题 根据信息安全管理与评估技术文件要求&#xff0c;模块一为网络平台搭建与网络安全防护。本文件为信息安全管理与评估项目竞赛-模块一试题。 模块一 平台搭建与安全设备防护 竞赛任务 网络平台搭建…

[网鼎杯 2020 朱雀组]Nmap(详细解读版)

这道题考察nmap的一些用法,以及escapeshellarg和escapeshellcmd两个函数的绕过&#xff0c;可以看这里PHP escapeshellarg()escapeshellcmd() 之殇 (seebug.org) 两种解题方法&#xff1a; 第一种通过nmap的-iL参数读取扫描一个文件到指定文件中第二种是利用nmap的参数写入we…

CAN总线的错误检测机制

文章目录 错误类型1、位错误-Bit Check Error2、填充错误-Stuff Error3、格式错误-Form Error4、ACK错误-ACK Error 和 CRC错误-CRC Error5、错误示例 错误处理1、主动错误 - error active2、被动错误 - error passive3、总线关闭 - bus off4、错误计数值的变动条件 参考 错误类…

信创终端操作系统上vmware的命令行操作

原文链接&#xff1a;信创终端操作系统上vmware的命令行操作 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇关于在信创终端操作系统上使用命令行操作VMware的文章。通过命令行管理VMware虚拟机可以提高效率&#xff0c;特别是在需要批量操作或自动化管理时。本文将…

【PyCharm】PyCharm 2024.1 的最新变化-代码导航与重构

目录 代码导航与重构 改进的代码导航功能 高级重构工具 代码导航与重构 改进的代码导航功能 符号搜索和文件搜索增强&#xff1a;改进后的符号搜索功能能够更快速地定位到特定的类、函数、变量等&#xff0c;而增强的文件搜索则让用户能够轻松找到所需的文件或目录。现在&a…

【IJER】: 二苄基甲苯加氢及不同 Pt 负载量的 Pt/Al对全氢二苄基甲苯制氢的催化性能

摘要&#xff1a; 研究了二苄基甲苯加氢和全氢二苄基甲苯(H18-DBT)脱氢的特性。氢化实验使用Raney-Ni进行。结果表明&#xff0c;170℃、7MPa是最佳反应条件&#xff0c;在30小时内氢气容量达到6.2wt%。 H18-DBT 脱氢的最佳温度为 290C。此外&#xff0c;在不同Pt金属负载量&am…