2024-03-18 作业

news2024/10/6 23:38:20

作业要求:

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;
}

运行截图:

 

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

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

相关文章

FREERTOS任务调度和切换

我们已经学会了 FreeRTOS 的任务创建和删除&#xff0c;挂起和恢复等基本操作&#xff0c;并且也学习了分析FreeRTOS 源码所必须掌握的知识&#xff1a;列表和列表项。但是任务究竟如何被创建、删除、挂起和恢复的&#xff1f;系统是怎么启动的等等这些我们还不了解&#xff0c…

html--花瓣

代码 <!DOCTYPE html> <html lang"en" ><head> <meta charset"UTF-8"> <title>Petals</title><link rel"stylesheet" href"css/style.css"></head><body><div class"…

探索ChatGPT时代下的下一代信息检索系统:机遇与挑战

1 Introduction 2022 年 11 月 30 日&#xff0c;OpenAI 推出了 ChatGPT&#xff0c;这是一款由先进的 GPT3.5 和更高版本的 GPT-4 生成语言模型提供支持的 AI 聊天机器人应用程序。该应用迅速吸引了全球超亿用户&#xff0c;创下了产品快速传播的新纪录。 它能够以对话的方式…

Linux docker2--镜像及容器操作-nginx部署示例

一、上一篇已经完成了docker的基础环境搭建&#xff0c;和docker的安装。不清楚的小伙伴可以自己找上一篇看一下。本例以部署nginx为例展示 二、镜像相关 1、切换docker的镜像源为阿里云 命令&#xff1a; sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <&l…

数据库管理-第161期 数据库,走着瞧(20240318)

数据库管理161期 2024-03-18 数据库管理-第161期 数据库&#xff0c;走着瞧&#xff08;20240318&#xff09;MySQLSACC走着瞧RACAIOps 总结 数据库管理-第161期 数据库&#xff0c;走着瞧&#xff08;20240318&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#xff08;尹海文&am…

php7.3.4连接sqlserver(windows平台)

前言 有个项目需要手上laravel连接客户的sqlserver数据库读取数据&#xff0c;故在本地开发的lnmp环境中&#xff0c;php需要增加扩展 过程 从微软官网下载sqlsrv扩展,注意注意php版本&#xff0c;下载地址 解压的文件会有nts和ts两个版本&#xff0c;本地打开phpinfo查看 将…

大型机开发入门

这里写目录标题 零 大型机应用场景1 IBM官方网站1.1 保险业务1.2 证券业务1.3 银行业务 2 日语2.1 常见口语 一 Cobol 古董1 cobol 语言的前景1.1 tiobe编程网站排名1.2 cobol &#xff08;Common Business-Oriented Language&#xff09; 2 环境安装及开发工具1.1 VScode Gnu…

最小化战斗力差距——算法思路

题目链接&#xff1a;1.最小化战斗力差距 - 蓝桥云课 (lanqiao.cn) 可分析&#xff0c;把一个数组分成两组&#xff0c;求一组的最大值与另一组的最小值的差值的绝对值最小&#xff0c;可以转换为求任意两个相邻数字之间的最小插值的绝对值。 可看图示&#xff1a; package lan…

Morris法解决二叉树问题,展开链表及中序遍历

问题一&#xff1a;二叉树展开成单链表 问题二&#xff1a;二叉树中序遍历 咋一看非常简单的两道题&#xff0c;但是如果我们加以一些限制&#xff0c;这两题就不简单了。对于这两道题&#xff0c;我们的空间复杂度都必须控制在O(1)。也就是说&#xff0c;迭代和递归全部失效…

Ventana Veyron V系列处理器架构分析

概述 Ventana的产品策略 计算die IO die&#xff08;友商产品/用户自定义^^&#xff09; Veyron V1 2022年12月发布&#xff0c;Ventana发布了全球首款基于RISC-V架构的服务器CPU——Veyron V1&#xff0c;号称性能可超越AMD EPYC 7763。 服务器级别的CPU IP chiplets解…

考研复习C语言进阶(4)

1. 为什么存在动态内存分配 我们已经掌握的内存开辟方式有&#xff1a; int val 20;//在栈空间上开辟四个字节 char arr[10] {0};//在栈空间上开辟10个字节的连续空间 但是上述的开辟空间的方式有两个特点&#xff1a; 1. 空间开辟大小是固定的。 2. 数组在申明的时候&#…

2.7 ROC曲线相比P-R曲线有什么特点?

2.7 ROC曲线相比P-R曲线有什么特点&#xff1f; 前情提要&#xff1a; P-R曲线详见&#xff1a;2.2 什么是精确率&#xff08;Precision&#xff09;与召回率&#xff08;Recall&#xff09;&#xff1f;二者如何权衡&#xff1f;&#xff09; 2.4 ROC曲线是什么&#xff1f; 2…

海康威视相机SDK二次开发(JAVA语言)

目录 前言客户端创建虚拟相机示例代码保存图片程序运行结果修改需求 二次开发引入外部包对SaveImage.java文件进行修改保存图片saveDataToFile方法选择相机chooseCamera方法主方法 FileUtil类处理过期照片启动类与配置文件application.yml通过实体类读取yml启动类 SaveImage.ja…

2024.3.18

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

代码随想录算法训练营第25天|16.组合总和III|17.电话号码的字母组合

代码随想录算法训练营第25天|16.组合总和III|17.电话号码的字母组合 216.组合总和III 如果把 组合问题理解了&#xff0c;本题就容易一些了。 题目链接/文章讲解&#xff1a;https://programmercarl.com/0216.%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8CIII.html 视频讲解&#xf…

如何在开放麒麟系统安装cpolar内网穿透实现公网环境下SSH远程连接

文章目录 1. 安装SSH服务2. 本地SSH连接测试3. openKylin安装Cpolar4. 配置 SSH公网地址5. 公网远程SSH连接小结 6. 固定SSH公网地址7. SSH固定地址连接 openKylin是中国首个基于Linux 的桌面操作系统开发者平台&#xff0c;通过开放操作系统源代码的方式&#xff0c;打造具有自…

强化PaaS平台应用安全:关键策略与措施

PaaS&#xff08;平台即服务&#xff0c;Platform-as-a-Service&#xff09;是一种云计算服务模式&#xff0c;可以为客户提供一个完整的云平台&#xff08;硬件、软件和基础架构&#xff09;以用于快捷开发、运行和管理项目&#xff0c;从而降低了企业云计算应用的高成本和复杂…

【晴问算法】入门篇—贪心算法—整数配对

题目描述 有两个正整数集合S、T&#xff0c;其中S中有n个正整数&#xff0c;T中有m个正整数。定义一次配对操作为&#xff1a;从两个集合中各取出一个数a和b&#xff0c;满足a∈S、b∈T、a≤b&#xff0c;配对的数不能再放回集合。问最多可以进行多少次这样的配对操作。 输入描…

arthas火焰图(async-profiler)在云交易中的运用

在日常工作中经常会遇到系统应用出现full gc、cpu内存飙高等场景&#xff0c;如果想要快速解决这些线上问题就需要首先能快速定位&#xff0c;最好能定位到具体代码。本文旨在通过一款线上监控诊断产品&#xff0c;阿里巴巴的arthas&#xff08;阿尔萨斯&#xff09;内部集成的…

50、C++/类的继承和多态相关学习20240318

一、c编程实现&#xff1a; 封装一个动物的基类&#xff0c;类中有私有成员&#xff1a;姓名&#xff0c;颜色&#xff0c;指针成员年纪&#xff1b; 再封装一个狗这样类&#xff0c;共有继承于动物类&#xff0c;自己拓展的私有成员有&#xff1a;指针成员&#xff1a;腿的个…