网络编辑day4

思维导图

广播模型发送端-->类似于UDP客户端

#include<head.h>
int main(int argc, const char *argv[])
{//1、创建套接字int sfd=socket(AF_INET,SOCK_DGRAM,0);if(sfd==-1){perror("socket error ");return -1;}//2、将套接字设置成允许广播int broadcast=1;if(setsockopt(sfd,SOL_SOCKET,SO_BROADCAST,&broadcast,sizeof(broadcast))==-1){perror("setsockopt error");return -1;}//3、绑定(非必须)//4、填充接收端地址信息结构体struct sockaddr_in cin;cin.sin_family=AF_INET;cin.sin_port=htons(6666);cin.sin_addr.s_addr=inet_addr("192.168.123.255");//5、发送消息char buf[128]="";while(1){printf("请输入>>>");fgets(buf,sizeof(buf),stdin);buf[strlen(buf)-1]=0;sendto(sfd,buf,sizeof(buf),0,(struct sockaddr*)&cin,sizeof(cin));}//6、关闭套接字close(sfd);return 0;
}

广播模型接受端-->类似于UDP服务器端

#include<head.h>
int main(int argc, const char *argv[])
{//1、创建套接字int sfd=socket(AF_INET,SOCK_DGRAM,0);if(sfd==-1){perror("socket error ");return -1;}//2、填充地址struct sockaddr_in sin;sin.sin_family=AF_INET;sin.sin_port=htons(6666);sin.sin_addr.s_addr=inet_addr("192.168.123.255");socklen_t socklen=sizeof(sin);//3、绑定if(bind(sfd,(struct sockaddr*)&sin,sizeof(sin))==-1){perror("bind error");return -1;}//4.接收信息char buf[128]="";while(1){recvfrom(sfd,buf,sizeof(buf),0,(struct sockaddr*)&sin,&socklen);printf("%s\n",buf);}//6、关闭套接字close(sfd);return 0;
}

组播发送端

#include<head.h>
int main(int argc, const char *argv[])
{//1、创建套接字int sfd=socket(AF_INET,SOCK_DGRAM,0);if(sfd==-1){perror("socket error");return -1;}//2、填充地址信息结构体struct sockaddr_in sin;sin.sin_family = AF_INET;sin.sin_port = htons(9999);sin.sin_addr.s_addr = inet_addr("224.1.2.3");//3、发送消息char sbuf[128] = "";while(1){printf("请输入>>>");fgets(sbuf, sizeof(sbuf), stdin);sbuf[strlen(sbuf)-1] = 0;//将消息发送出去sendto(sfd, sbuf, sizeof(sbuf), 0, (struct sockaddr*)&sin, sizeof(sin));printf("发送成功\n");}//4、关闭套接字close(sfd);return 0;	
}

组播接收端

#include<head.h>
int main(int argc, const char *argv[])
{//1、创建套接字int sfd=socket(AF_INET,SOCK_DGRAM,0);if(sfd==-1){perror("socket error");return -1;}//2、设置网络属性struct ip_mreqn im;im.imr_multiaddr.s_addr = inet_addr("224.1.2.3");    //组播地址im.imr_address.s_addr = inet_addr("192.168.122.88");  //本机ipim.imr_ifindex = 2;             //网络索引if(setsockopt(sfd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &im, sizeof(im)) == -1){perror("setsockopt error");return -1;}printf("加入多播组成功\n");//3、填充结构体struct sockaddr_in sin;sin.sin_family=AF_INET;sin.sin_port=htons(9999);sin.sin_addr.s_addr=inet_addr("224.1.2.3");//4、绑定if(bind(sfd,(struct sockaddr*)&sin,sizeof(sin))==-1){perror("bind error");return -1;}//5、接收消息char buf[128]="";while(1){bzero(buf,sizeof(buf));recvfrom(sfd,buf,sizeof(buf),0,0,0);printf("收到:%s\n",buf);}close(sfd);return 0;
}

 流式域套接字 服务器端

#include<head.h>
int main(int argc, const char *argv[])
{//1.创建套接字int sfd=socket(AF_UNIX,SOCK_STREAM,0);if(sfd==-1){perror("sfd error");return -1;}//套接字文件只能绑定一个不存在的套接字文件//所以在绑定前需要判断当前文件是否存在if(access("./unix",F_OK)==0){//表示文件存在,删除该文件if(unlink("./unix")==-1){perror("unlink error");return -1;}}//2、填充地址信息结构体struct sockaddr_un sun;sun.sun_family=AF_UNIX;//sun.sun_path="./unix";//错误,字符串赋值不能使用复制运算符strcpy(sun.sun_path,"./unix");//3.绑定if(bind(sfd,(struct sockaddr*)&sun,sizeof(sun))==-1){perror("bind error");return -1;}//4、监听if(listen(sfd,128)==-1){perror("listen error");return -1;}//5、阻塞接收客户端连接请求struct sockaddr_un cun;socklen_t socklen=sizeof(cun);int newfd=accept(sfd,(struct sockaddr*)&cun,&socklen);//表示不接收客户端地址信息if(newfd==-1){perror("accept error");return -1;}//6、收发数据char buf[128]="";while(1){ bzero(buf,sizeof(buf));int res=recv(newfd,buf,sizeof(buf),0);if(res==0){printf("客户端以下线\n");break;}printf("[%s]buf= %s\n",cun.sun_path,buf);}//7、关闭套接字close(newfd);close(sfd);return 0;
}

流式域套接字客户端

#include<head.h>
int main(int argc, const char *argv[])
{//1.创建套接字int sfd=socket(AF_UNIX,SOCK_STREAM,0);if(sfd==-1){perror("sfd error");return -1;}//套接字文件只能绑定一个不存在的套接字文件//所以在绑定前需要判断当前文件是否存在if(access("./linix",F_OK)==0){//表示文件存在,删除该文件if(unlink("./linix")==-1){perror("unlink error");return -1;}}//2、填充地址信息结构体struct sockaddr_un cun;cun.sun_family=AF_UNIX;strcpy(cun.sun_path,"./linix");//3.绑定if(bind(sfd,(struct sockaddr*)&cun,sizeof(cun))==-1){perror("bind error");return -1;}//4.链接struct sockaddr_un sun;sun.sun_family=AF_UNIX;strcpy(sun.sun_path,"./unix");if(connect(sfd,(struct sockaddr*)&sun,sizeof(sun))==-1){perror("connect error");return -1;}//收发数据char buf[128]="";while(1){bzero(buf,sizeof(buf));printf("请输入>>>");fgets(buf,sizeof(buf),stdin);buf[strlen(buf)-1]=0;send(sfd,buf,sizeof(buf),0);printf("发送成功\n");if(strcmp(buf,"quit")==0){break;}}//7、关闭套接字close(sfd);return 0;
}

报式域套接字服务器端

#include<head.h>
int main(int argc, const char *argv[])
{//创建套接字文件int sfd = socket(AF_UNIX,SOCK_DGRAM,0);if(sfd==-1){perror("sfd error");return -1;}if(access("./unix",F_OK)==0){if(unlink("./unix")==-1){printf("unlink error");return -1;}}//绑定struct sockaddr_un sun;sun.sun_family=AF_UNIX;strcpy(sun.sun_path,"./unix");if(bind(sfd,(struct sockaddr*)&sun,sizeof(sun))==-1){perror("bind error");return -1;}//数据的收发char buf[128]="";struct sockaddr_un cun;socklen_t socklen=sizeof(cun);while(1){bzero(buf,sizeof(buf));recvfrom(sfd,buf,sizeof(buf),0,(struct sockaddr*)&cun,&socklen);printf("读取的消息为:%s\n",buf);strcat(buf,"*_*");if(sendto(sfd,buf,sizeof(buf),0,(struct sockaddr*)&cun,socklen)==-1){perror("write error");return -1;}}close(sfd);return 0;
}

报式域套接字客户端

#include<head.h>
int main(int argc, const char *argv[])
{//创建套接字文件int sfd = socket(AF_UNIX,SOCK_DGRAM,0);if(sfd==-1){perror("sfd error");return -1;}if(access("./linix",F_OK)==0){if(unlink("./linix")==-1){printf("unlink error");return -1;}}//绑定struct sockaddr_un sun;sun.sun_family=AF_UNIX;strcpy(sun.sun_path,"./linix");if(bind(sfd,(struct sockaddr*)&sun,sizeof(sun))==-1){perror("bind error");return -1;}//数据的收发	struct sockaddr_un cun;cun.sun_family=AF_UNIX;strcpy(cun.sun_path,"./unix");char buf[128]="";while(1){printf("请输入>>>");fgets(buf,sizeof(buf),stdin);buf[strlen(buf)-1]=0;sendto(sfd,buf,sizeof(buf),0,(struct sockaddr*)&cun,sizeof(cun));if(strcmp(buf,"quit")==0){break;}recvfrom(sfd,buf,sizeof(buf),0,NULL,NULL);printf("收到消息:%s\n",buf);}close(sfd);return 0;
}

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

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

相关文章

2023年山东省职业院校技能大赛高职组信息安全管理与评估 模块二(正式赛)

2023年山东省职业院校技能大赛高职组信息安全管理与评估 模块二 模块二竞赛项目试题 根据信息安全管理与评估技术文件要求&#xff0c;模块二为网络安全事件响应、数字取证调查和 应用程序安全。本文件为信息安全管理与评估项目竞赛-模块二试题。 介绍 竞赛有固定的开始和结…

0.96寸OLED-单独驱动和U8g2驱动-硬件软件IIC

0.96寸OLED-单独驱动和U8g2驱动-硬件软件IIC 博主平时DIY经常使用OLED&#xff0c;其中以4脚的I2C屏最多&#xff0c;就想着总结一下子&#xff0c;让广大DIY朋友更容易找到资源。 驱动采用的时SSD1306 同学们拿到代码后&#xff0c;可以直接用&#xff0c;其中博主给的代码默认…

学习响应式编程中遇到的奇奇怪怪的问题

spring项目无法启动 Description: Web application could not be started as there was no org.springframework.boot.web.reactive.server.ReactiveWebServerFactory bean defined in the context. Action: Check your application’s dependencies for a supported react…

【GitHub项目推荐--AI杀入斗地主领域】【转载】

AlphaGo&#xff1a;第一个战胜围棋世界冠军的人工智能机器人。 我不会玩围棋&#xff0c;没办法和 AlphaGO 对局。但是我喜欢玩斗地主&#xff0c;有斗地主人工智能机器人吗&#xff1f; 有&#xff0c;而且还开源了。DouZero&#xff1a;快手团队开发的斗地主AI。别的不说&…

文件共享服务(一)——DAS、NAS、SAN存储类型

一、存储类型 存储类型主要有三种 1. DAS直连式存储 通常由数据线直连电脑就可以用&#xff0c;比如一块新硬盘&#xff0c;只需要利用磁盘模拟器分区&#xff0c;创建文件系统&#xff0c;挂载就可以使用了。 PC中的硬盘或只有一个外部SCSI接口的JBOD存储设备&#xff08;即…

[java数据结构] ArrayList和LinkedList介绍与使用

目录 (一) 线性表 (二) ArrayList 1. ArrayList的介绍 2. ArrayList的常见方法和使用 3. ArrayList的遍历 4. ArrayList的模拟实现 5. ArrayList的优缺点 (三) LinkedList 1. LinkedList的介绍 2. LinkedList的常见方法和使用 3. LinkedList的遍历 4. LinkedList的…

力扣每日一练(24-1-18)

经验一&#xff1a;不要把问题想复杂 Python&#xff1a; min_price float(inf)max_profit 0for price in prices:min_price min(min_price, price)max_profit max(max_profit, price - min_price)return max_profit C#&#xff1a; public int MaxProfit(int[] prices) {i…

强化学习(二)多臂老虎机 “Multi-armed Bandits”——1

将强化学习与机器学习、深度学习区分开的最重要的特征为&#xff1a;它通过训练中信息来评估所采取的动作&#xff0c;而不是给出正确的动作进行指导&#xff0c;这极大地促进了寻找更优动作的需求。 1、多臂老虎机&#xff08;Multi-armed Bandits&#xff09;问题 赌场的老虎…

WPF入门到跪下 第十一章 Prism(一)数据处理

官网&#xff1a;https://primslibrary.com 源码地址&#xff1a;https://guthub.com/PrismLibrary/prism Prism是由微软发布、维护的开源框架&#xff0c;提供了一组设计模式的实现&#xff0c;有助于编写结构良好的且可维护的XAML应用程序&#xff0c;包括MVVM、依赖注入、命…

实验三 Oracle数据库的创建和管理

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的很重要&…

HackTheBox - Medium - Linux - Health

Health Health 是一台中型 Linux 计算机&#xff0c;在主网页上存在 SSRF 漏洞&#xff0c;可利用该漏洞访问仅在 localhost 上可用的服务。更具体地说&#xff0c;Gogs 实例只能通过 localhost 访问&#xff0c;并且此特定版本容易受到 SQL 注入攻击。由于攻击者可以与 Gogs …

Redis基础知识(一)

一 Redis的数据类型 1.1 基本数据类型&#xff1a; String(字符串) Hash(哈希表) List(列表) Set(集合) ZSet(有序集合) 1.2 特殊类型 GEO(地理空间) HyperLogLog(基数统计) bitMap(位图) bitField(位域…

架构的演进

1.1单体架构 单体架构也称之为单体系统或者是单体应用。就是一种把系统中所有的功能、模块耦合在一个应用中的架构方式。 存在的问题&#xff1a; 代码耦合&#xff1a;模块的边界模糊、依赖关系不清晰&#xff0c;整个项目非常复杂&#xff0c;每次修改代码都心惊胆战迭代困…

RabbitMQ 部署与配置[CentOS7]

# RabbitMQ,Erlang 版本包对应 https://rabbitmq.com/which-erlang.html#eol-seriescd /usr/local/src# Erlang下载 # https://github.com/rabbitmq/erlang-rpm/releases https://github.com/rabbitmq/erlang-rpm/releases/download/v23.3.4.5/erlang-23.3.4.5-1.el7.x86_64.rp…

NTFS 磁盘管理器---NTFS Disk by Omi NTFS中文

NTFS Disk by Omi NTFS是一款专为Mac用户设计的NTFS磁盘管理工具。它可以帮助用户方便地访问和管理NTFS格式的硬盘、U盘、移动硬盘以及其他存储设备&#xff0c;并提供高效稳定的NTFS卷管理功能。该软件具有简单的用户界面&#xff0c;使用户能够快速访问和管理NTFS磁盘上的文件…

ChatGPT给出的前端面试考点(Vue.js)

ChatGPT给出的前端面试考点&#xff08;Vue.js&#xff09; 答案 1. Vue.js是什么&#xff1f;它的主要特点是什么&#xff1f; Vue.js是一个渐进式JavaScript框架&#xff0c;用于构建用户界面。它的主要特点包括&#xff1a; 数据绑定&#xff1a;Vue.js使用双向数据绑定&…

图灵日记之java奇妙历险记--String类

目录 String常用方法字符串构造String对象的比较字符串查找char charAt(int index)int indexOf(int ch)int indexOf(int ch, int fromIndex)int indexOf(String str)int indexOf(String str, int fromIndex)int lastIndexOf(String str)int lastIndexOf(String str, int fromIn…

OceanBase集群扩缩容

​ OceanBase 数据库采用 Shared-Nothing 架构&#xff0c;各个节点之间完全对等&#xff0c;每个节点都有自己的 SQL 引擎、存储引擎、事务引擎&#xff0c;天然支持多租户&#xff0c;租户间资源、数据隔离&#xff0c;集群运行的最小资源单元是Unit&#xff0c;每个租户在每…

OPC UA 开源库编译方法及通过OPC UA连接西门S7-1200 PLC通信并进行数据交换

前言 在现代工业自动化领域&#xff0c;OPC UA&#xff08;开放性生产控制和统一架构&#xff09;是一种广泛应用的通信协议。本文将以通俗易懂的方式解释OPC UA的含义和作用&#xff0c;帮助读者更好地理解这一概念。 一、OPC UA的定义 OPC UA全称为“开放性生产控制和统一…

Labview实现用户界面切换的几种方式---通过VI间相互调用

在做用户界面时我们的程序往往面对的对象是程序使用者&#xff0c;复杂程序如果放在同一个页面中&#xff0c;往往会导致程序冗长卡顿&#xff0c;此时通过多个VI之间的切换就可以实现多个界面之间的转换&#xff0c;也会显得程序更加的高大上。 本文所有程序均可下载&#xff…