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://xiahunao.cn/news/3270214.html

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

相关文章

24暑假算法刷题 | Day22 | LeetCode 77. 组合,216. 组合总和 III,17. 电话号码的字母组合

目录 77. 组合题目描述题解 216. 组合总和 III题目描述题解 17. 电话号码的字母组合题目描述题解 77. 组合 点此跳转题目链接 题目描述 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输…

面向切面编程(AOP)

通知类型 Grep Console插件可右键选中日志高亮显示 正常情况 异常情况(around after和目标方法在一起&#xff0c;目标方法异常后&#xff0c;around after不执行) 通知顺序 execution 需要匹配两个没有任意交集的方法时&#xff0c;可以使用两个execution annotation 自定义…

【计算机网络】期末实验答辩

注意事项&#xff1a; 1&#xff09;每位同学要在下面做过的实验列表中选取三个实验进行答辩准备&#xff0c;并将自己的姓名&#xff0c;学号以及三个实验序号填入共享文档"1&#xff08;2&#xff09;班答辩名单"中。 2&#xff09;在答辩当日每位同学由老师在表…

支持向量机 及其分类案例详解(附Python 代码)

支持向量机分类器预测收入等级 我们将构建一个支持向量机&#xff08;SVM&#xff09;分类器&#xff0c;以预测一个人基于14个属性的收入等级。我们的目标是判断收入是否高于或低于每年$50,000。因此&#xff0c;这是一个二元分类问题。我们将使用在此处可用的人口普查收入数…

Python高维度大型气象矩阵存储策略分享

零、前情提要 最近需要分析全球范围多变量的数值预报数据&#xff0c;将grb格式的数据下载下来经过一通处理后需要将预处理数据先保存一遍&#xff0c;方便后续操作&#xff0c;处理完发现此时的数据维度很多&#xff0c;数据量巨大&#xff0c;使用不同的保存策略的解析难度和…

nowcoder bc49判断两个数的大小关系

描述 KiKi想知道从键盘输入的两个数的大小关系&#xff0c;请编程实现。 输入描述&#xff1a; 题目有多组输入数据&#xff0c;每一行输入两个整数&#xff08;范围-231~231-1&#xff09;&#xff0c;用空格分隔。 输出描述&#xff1a; 针对每行输入&#xff0c;输出两…

zotfile基础配置详解

zotfile可以将自动移动pdf到指定文件夹中&#xff0c;那么应该如何配置呢&#xff1f; 遵循极简原则&#xff0c;只需配置两个地方即可。 一、路径配置 第一处是pdf附件存放的位置&#xff0c;可以指定自己想要的地方&#xff0c;我放在了C盘的文档文件夹下。 第二处是分类法…

由恶劣事件: CrowdStrike发布案例更新导致微软全球蓝屏事件的启示

前言 网络安全公司 CrowdStrike 周四发布软件更新后&#xff0c;机场、银行、证券交易所、911 服务、交通系统、酒店、新闻媒体、医院、紧急服务等开始出现臭名昭著的蓝屏死机 (BSOD)。在看似多年来最严重的 IT 中断中&#xff0c;大规模的网络安全软件问题正在全球范围内造成…

【七】Hadoop3.3.4基于ubuntu24的分布式集群安装

文章目录 1. 下载和准备工作1.1 安装包下载1.2 前提条件 2. 安装过程STEP 1: 解压并配置Hadoop选择环境变量添加位置的原则检查环境变量是否生效 STEP 2: 配置Hadoop2.1. 修改core-site.xml2.2. 修改hdfs-site.xml2.3. 修改mapred-site.xml2.4. 修改yarn-site.xml2.5. 修改hado…

C/C++大雪纷飞代码

目录 写在前面 C语言简介 EasyX简介 大雪纷飞 运行结果 写在后面 写在前面 本期博主给大家带来了C/C实现的大雪纷飞代码&#xff0c;一起来看看吧&#xff01; 系列推荐 序号目录直达链接1爱心代码https://want595.blog.csdn.net/article/details/1363606842李峋同款跳…

Linux笔记 --- 程序入门

‘\n’换行符 通常来讲我们都是使用这个符号来进行换行的操作&#xff0c;但是这个符号不仅仅是用于换行 当标准输出文件中默认使用缓冲 &#xff0c;也就是当遇到 \n 的时候会进行刷新缓冲区&#xff08;把数据输 出&#xff09; 当打印语句后面没有换行符时 &#xff0c; 需要…

强烈推荐这 3 款让你用一次就爱上,永不想删除的软件

IcecreamPDFEditor IcecreamPDFEditor是一款功能强大的PDF编辑工具&#xff0c;具备多种编辑和查看PDF文件的功能。这款软件不仅可以方便地阅读和查看各种PDF文件&#xff0c;还可以进行编辑操作。它拥有编辑文本、注释添加、页面管理以及PDF文件保护等功能。 用户可以通过下载…

JS逆向高级爬虫

JS逆向高级爬虫 JS逆向的目的是通过运行本地JS的文件或者代码,以实现脱离他的网站和浏览器,并且还能拿到和浏览器加密一样的效果。 10.1、编码算法 【1】摘要算法&#xff1a;一切从MD5开始 MD5是一个非常常见的摘要(hash)逻辑. 其特点就是小巧. 速度快. 极难被破解. 所以,…

ELK安装(Elasticsearch+Logstash+Kibana+Filebeat)

一、简介 1.1、软件简介 ELK其实是Elasticsearch&#xff0c;Logstash 和 Kibana三个产品的首字母缩写&#xff0c;这三款都是开源产品。 1.1.1、Elasticsearch简介 Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析…

研究生选择学习Android开发的利与弊?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「Android的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;产品经理可以学学Axure快…

简单的CSS样式

样式分为三种 内部样式&#xff1a;写在html文件里的样式叫内部样式 内联样式&#xff1a;写在需要的标签中 外部样式&#xff1a;写在外部css文件里 可以通过不同的选择器来选择设置指定组件的样式&#xff1a; <style>/* 写在html文件里的样式叫内部样式 *//* 选择器 *…

6.3 面向对象技术-设计模式

设计模式 创建型模式 结构型模式

C++ unordered_map

1. unordered系列关联式容器 在C98 中&#xff0c; STL 提供了底层为红黑树结构的一系列关联式容器&#xff0c;在查询时效率可达到 &#xff0c;即最差情况下需要比较红黑树的高度次&#xff0c;当树中的节点非常多时&#xff0c;查询效率也不理想。最好的查询是&#xff0c…

我在百科荣创企业实践——简易函数信号发生器(6)

对于高职教师来说,必不可少的一个任务就是参加企业实践。这个暑假,本人也没闲着,报名参加了上海市电子信息类教师企业实践。7月8日到13日,有幸来到美丽的泉城济南,远离了上海的酷暑,走进了百科荣创科技发展有限公司。在这短短的一周时间里,我结合自己的教学经验和企业的…

Leetcode 剑指 Offer II 088.使用最小花费爬楼梯

题目难度: 简单 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 数组的每个下标作为一个阶梯&#xff0c;第 i 个阶梯对应着一个非…