2024-03-18 作业

作业要求:

1> 将广播发送端和接收端各实现一遍

2> 将组播发送端和接收端各实现一遍

3> 将流式域套接字的服务器端和客户端各实现一遍

1:将广播发送端和接收端各实现一遍

运行代码:
服务端:
客户端:
运行截图:

2:将组播发送端和接收端各实现一遍

运行代码:

服务端:
客户端:

运行截图:

3:将流式域套接字的服务器端和客户端各实现一遍

运行代码:

服务端:
#include<myhead.h>
int main(int argc, const char *argv[])
{
	//1.创建套接字文件
	int cfd = socket(AF_UNIX,SOCK_STREAM,0);
	if(-1==cfd){
		perror("socket error");
		return -1;
	}
	printf("%d success:cfd = %d\n",__LINE__,cfd);
	//判断文件是否存在
	if(access("./linux",F_OK)==0){
		if(unlink("./linux")==-1){
			perror("unlink");
			return -1; 
		}
	}
	//绑定自己
	struct sockaddr_un cun;
	cun.sun_family = AF_UNIX;
	strcpy(cun.sun_path,"./linux");
	if(bind(cfd,(struct sockaddr *)&cun,sizeof(cun))==-1){
		perror("bind");
		return -1;
	}
	printf("%d success:bind\n",__LINE__);
	//请求连接
	struct sockaddr_un sun;
	sun.sun_family = AF_UNIX;
	strcpy(sun.sun_path,"./unix");
	if(connect(cfd,(struct sockaddr *)&sun,sizeof(sun))==-1){
		perror("connect");
		return -1;
	}
	printf("%d success:connect\n",__LINE__);
	//信息交互
	char wbuf[128]="";
	while(1){
		printf("请输入>>>");
		fgets(wbuf,sizeof(wbuf)-1,stdin);
		wbuf[strlen(wbuf)-1]=0;
		send(cfd,wbuf,strlen(wbuf),0);
		bzero(wbuf,sizeof(wbuf));
		recv(cfd,wbuf,sizeof(wbuf),0);
		printf("收到信息>>>%s\n",wbuf);
	}
	//关闭文件
	close(cfd);
	


	return 0;
}
客户端:
#include<myhead.h>
int main(int argc, const char *argv[])
{
	//1.创建套接字文件
	int sfd = socket(AF_UNIX,SOCK_STREAM,0);
	if(-1==sfd){
		perror("socket error");
		return -1;
	}
	printf("%d success:sfd = %d\n",__LINE__,sfd);
	//2.判断文件是否存在
	if(access("./unix",F_OK)==0){
		if(unlink("./unix")==-1){
			perror("unlink error");
			return -1;
		}
	}
	printf("%d success\n",__LINE__);
	//3.绑定
	struct sockaddr_un sun;
	sun.sun_family = AF_UNIX;
	strcpy(sun.sun_path,"./unix");
	if(-1==bind(sfd,(struct sockaddr *)&sun,sizeof(sun))){
		perror("bind error");
		return -1;
	}
	printf("%d success:bind\n",__LINE__);
	//4.开启监听模式
	if(-1==listen(sfd,128)){
		perror("listen error");
		return -1;
	}
	printf("%d success:listen\n",__LINE__);
	//5.接受连接
	int newfd;
	struct sockaddr_un cun;
	socklen_t socklen = sizeof(cun);
	if(-1 == (newfd = accept(sfd,(struct sockaddr *)&cun,&socklen))){
		perror("accept error");
		return -1;
	}
	printf("%d success:accept\n",__LINE__);
	printf("[%s] 发来连接请求\n",cun.sun_path);
	//6.信息交互
	char rbuf[128] = "";
	while(1){
		bzero(rbuf,sizeof(rbuf));
		int res = recv(newfd,rbuf,sizeof(rbuf)-1,0);
		if(res<=0){
			printf("客户端已下线\n");
			return -1;
		}
		printf("%d [%s]>>>%s\n",__LINE__,cun.sun_path,rbuf);
		strcat(rbuf," *<*");
		send(newfd,rbuf,strlen(rbuf),0); 
		//printf("发送成功\n");
		
	}
	//7.关闭
	close(sfd);
	close(newfd);
	return 0;
}

运行截图:

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

视频号带货做的人多吗?这个项目究竟靠不靠谱呢?

在当下互联网经济的浪潮中&#xff0c;视频号带货已经成为了一种新兴的商业模式&#xff0c;吸引了众多创业者和商家的目光。那么&#xff0c;视频号带货做的人多吗?这个项目究竟靠不靠谱呢?&#xff0c;接下来&#xff0c;一起看看本文的介绍吧。 首先&#xff0c;我们来看视…

ROS Kinetic通信编程:话题、服务、动作编程 opencv学习使用

文章目录 一、话题编程二、服务编程三、动作编程四、安装opencv 图片特效示例五、视频示例1. 虚拟机获取摄像头权限2. 播放视频3. 录制视频 接上篇&#xff0c;继续学习ROS通信编程基础 一、话题编程 步骤&#xff1a; 创建发布者 初始化ROS节点向ROS Master注册节点信息&…

Java 设计模式系列:行为型-观察者模式

简介 观察者模式是一种行为型设计模式&#xff0c;又被称为发布-订阅&#xff08;Publish/Subscribe&#xff09;模式&#xff0c;它定义了对象之间的一对多依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都会得到通知并被自动更新。 观察者…

configmap nginx.conf报错:invalid number of arguments in “proxy_set_header“

追加>> cat << EOF >> a.txt ###############gradle############## abcdefg chineewew ###############gradle############## EOF 覆盖> cat << EOF > /etc/profile ###############gradle############## 121321231 121231 ###############grad…

数据结构与算法Bonus-KNN问题的代码求解过程

一、问题提出 &#xff08;一&#xff09;要求 1.随机生成>10万个三维点的点云&#xff0c;并以适当方式存储 2.自行实现一个KNN算法&#xff0c;对任意Query点&#xff0c;返回最邻近的K个点 3.不允许使用第三方库(e.g.flann&#xff0c;PCL,opencv)! 4.语言任选(推荐…

专业140+总分410+南京大学851信号与系统考研经验南大电子信息与通信集成,电通,真题,大纲,参考书。

今年分数出来还是有点小激动&#xff0c;专业851信号与系统140&#xff08;感谢Jenny老师辅导和全程悉心指导&#xff0c;答疑&#xff09;&#xff0c;总分410&#xff0c;梦想的南大离自己越来越近&#xff0c;马上即将复试&#xff0c;心中慌的一p&#xff0c;闲暇之余&…

【活动】政府工作报告视角下的计算机行业发展前瞻与策略探讨

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 引言正文计算机行业在政府工作报告中的定位与发展态势政策导向解析未来机遇展望…

springboot整合springsecurity,从数据库中认证

概述&#xff1a;springsecurity这个东西太容易忘了&#xff0c;这里写点东西&#xff0c;避免忘掉 目录 第一步&#xff1a;引入依赖 第二步&#xff1a;创建user表 第三步&#xff1a;创建一个用户实体类&#xff08;User&#xff09;和一个用于访问用户数据的Repository…

一文教会你SpringBoot是如何启动的

SpringBoot启动流程分析 流程图 源码剖析 运行Application.run()方法 我们在创建好一个 SpringBoot 程序之后&#xff0c;肯定会包含一个类&#xff1a;xxxApplication&#xff0c;我们也是通过这个类来启动我们的程序的&#xff08;梦开始的地方&#xff09;&#xff0c;而…

【超详细图文讲解】如何利用VMware创建CentOS虚拟机(包括如何更改网络设置 + 远程访问虚拟机方法)

文章目录 前言1. 准备相关软件环境1.1 获取 ISO 镜像包1.2 VMware 的安装 2. 使用 VMware 安装 CentOS3. 初始化虚拟机4. 虚拟机网络的设置4.1 虚拟机的三种网络连接模式桥接模式NAT 模式仅主机模式 4.2 如何更改网络设置 5. 远程访问虚拟机的方法5.1 使用 cmd 进行访问5.2 使用…

LSS (Lift, Splat, Shoot)

项目主页 https://nv-tlabs.github.io/lift-splat-shoot 图1&#xff1a;本文提出一种模型&#xff0c;给定多视角相机数据 (左)&#xff0c; 直接在鸟瞰图 (BEV) 坐标系(右)中推理语义。我们展示了车辆分割 (蓝色)&#xff0c;可驾驶区域 (橙色) 和车道分割 (绿色) 的结果。然…

外包干了28天,技术退步明显......

说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入深圳某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&a…

<DFS剪枝>数字王国之军训排队

DFS剪枝 其实就是将搜索过程一些不必要的部分直接剔除掉。 剪枝是回溯法的一种重要优化手段&#xff0c;往往需要先写一个暴力搜索&#xff0c;然后找到某些特殊的数学关系&#xff0c;或者逻辑关系&#xff0c;通过它们的约束让搜索树尽可能浅而小&#xff0c;从而达到降低时间…

程序员在公司学习新项目的5步法:

1 了解业务 - 系统所在行业&#xff1f; - 系统是做什么的&#xff1f; - 系统主要面向的人群是谁&#xff1f; - 主要提供了哪些功能&#xff1f; - 系统设计的关键业务流程是什么样的&#xff1f; - 项目面临的挑战是什么&#xff1f; - 项目未来规划是什么&#xff1f; 2 …

HarmonyOS(鸿蒙)快速入门

一:下载开发工具 鸿蒙的开发工具叫DevEco 下载点击 其他部分都一直next 就行,这个页面出现的install 建议都点击install 然后单独选择安装目录 可能存在的问题 就是之前安装nodejs&#xff08;比如自己开发web或者RN等情况&#xff09;版本低 等情况 所以建议你单独安装一次 …

c语言商品库存管理系统

定制魏:QTWZPW,获取更多源码等 目录 题目 功能概述 数据结构 用户界面 ​编辑 主要函数 数据存储 完整代码 总结 题目 实现一个商品库存管理系统,可以对商品进行入库、出库、删除、修改、查询以及显示所有商品信息的操作。 功能概述 系统包含以下主要功能: 商品…

Web基础06-AJAX,Axios,JSON数据

目录 一、AJAX 1.概述 2.主要作用 3.快速入门 4.AJAX的优缺点 &#xff08;1&#xff09;优点 &#xff08;2&#xff09;缺点 5.同源策略 二、Axios 1.概述 2.快速入门 3.请求方式别名 三、JSON 1.概述 2.主要作用 3.基础语法 4.JSON数据转换 &#xff08;1…

【MLLM+轻量多模态模型】24.02.Bunny-v1.0-2B-zh: 轻量级多模态语言模型 (效果一般)

24.02 北京人工智能研究院&#xff08;BAAI&#xff09;提出以数据为中心的轻量级多模态模型 arxiv论文&#xff1a;2402.Efficient Multimodal Learning from Data-centric Perspective 代码&#xff1a;https://github.com/BAAI-DCAI/Bunny 在线运行&#xff1a;https://wis…

day6 3/18

2.试编程&#xff1a; 封装一个动物的基类&#xff0c;类中有私有成员&#xff1a;姓名&#xff0c;颜色&#xff0c;指针成员年纪 再封装一个狗这样类&#xff0c;共有继承于动物类&#xff0c;自己拓展的私有成员有&#xff1a;指针成员&#xff1a;腿的个数&#xff08;整…

【JavaEE -- 多线程进阶 - 面试重点】

多线程进阶 1. 常见锁策略1.1 乐观锁和悲观锁1.2 轻量级锁和重量级锁1.3 自旋锁和挂起等待锁synchronized具有自适应能力1.4 普通互斥锁和读写锁1.5 公平锁和非公平锁1.6 可重入锁和不可重入锁 2. Synchronized原理&#xff08;特点、加锁过程、自适应&#xff09;2.1 Synchron…