day05-网络编程

1>广播

#include "test.h"#define SER_IP "192.168.42.106"
#define SER_PORT 8888int main(int argc, const char *argv[])
{int sfd = socket(AF_INET, SOCK_DGRAM, 0);if(sfd == -1){perror("socket error");return -1;}int broadcast = 1; if (setsockopt(sfd, SOL_SOCKET, SO_BROADCAST, &broadcast, sizeof(broadcast)) == -1){perror("setsockopt error");return -1;}struct sockaddr_in sin;sin.sin_family = AF_INET;sin.sin_port = htons(SER_PORT);sin.sin_addr.s_addr = inet_addr(SER_IP);char sbuf[128] = "";while (1){printf("请输入>>>");fgets(sbuf, sizeof(sbuf), stdin);sbuf[strlen(sbuf) - 1] = 0;sendto(sfd, sbuf, strlen(sbuf), 0, (struct sockaddr*)&sin, sizeof(sin));printf("发送成功\n");}close(sfd);return 0;
}
#include "test.h"#define SER_IP "192.168.42.106"
#define SER_PORT 8888int main(int argc, const char *argv[])
{int sfd = socket(AF_INET, SOCK_DGRAM, 0);if(sfd == -1){perror("socket error");return -1;}struct sockaddr_in sin;sin.sin_family = AF_INET;sin.sin_port = htons(SER_PORT);sin.sin_addr.s_addr = inet_addr(SER_IP);if (bind(sfd, (struct sockaddr*)&sin, sizeof(sin)) == -1){perror("bind error");return -1;}char rbuf[128] = "";while (1){bzero(rbuf, sizeof(rbuf));recv(sfd, rbuf, strlen(rbuf), 0);printf("收到消息:%s\n", rbuf);}close(sfd);return 0;
}

2>组播

#include "test.h"#define SER_IP "192.168.42.106"
#define SER_PORT 8888int main(int argc, const char *argv[])
{int sfd = socket(AF_INET, SOCK_DGRAM, 0);if(sfd == -1){perror("socket error");return -1;}struct sockaddr_in rin;rin.sin_family = AF_INET;rin.sin_port = htons(SER_PORT);rin.sin_addr.s_addr = inet_addr(SER_IP);if (bind(sfd, (struct sockaddr*)&rin, sizeof(rin)) == -1){perror("bind error");return -1;}struct sockaddr_in sin;sin.sin_family = AF_INET;sin.sin_port = htons(8888);sin.sin_addr.s_addr = inet_addr("224.1.2.3");char sbuf[128] = "";while(1){printf("请输入>>>");fgets(sbuf, sizeof(sbuf), stdin);sbuf[strlen(sbuf) - 1] = 0;sendto(sfd, sbuf, strlen(sbuf), 0, (struct sockaddr*)&sin, sizeof(sin));printf("发送成功\n");}close(sfd);return 0;
}
#include "test.h"#define SER_IP "192.168.42.106"
#define SER_PORT 8888int main(int argc, const char *argv[])
{int sfd = socket(AF_INET, SOCK_DGRAM, 0);if(sfd == -1){perror("socket error");return -1;}struct ip_mreqn imr;imr.imr_multiaddr.s_addr = inet_addr("224.1.2.3");imr.imr_address.s_addr = inet_addr(SER_IP);imr.imr_ifindex = 2;if (setsockopt(sfd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &imr, sizeof(imr)) == -1){perror("setsockopt error");return -1;}struct sockaddr_in rin;rin.sin_family = AF_INET;rin.sin_port = htons(SER_PORT);rin.sin_addr.s_addr = inet_addr(SER_IP);if (bind(sfd, (struct sockaddr*)&rin, sizeof(rin)) == -1){perror("bind error");return -1;}char rbuf[128] = "";while(1){bzero(rbuf, sizeof(rbuf));recv(sfd, rbuf, strlen(rbuf), 0);printf("收到消息:%s\n", rbuf);}close(sfd);return 0;
}

3>流式域套接字

#include "test.h"#define SER_IP "192.168.42.106"
#define SER_PORT 8888int main(int argc, const char *argv[])
{int sfd = socket(AF_UNIX, SOCK_STREAM, 0);if(sfd == -1){perror("socket error");return -1;}if (access("./mysocket", F_OK) == -1){if (unlink("./mysocket") == -1){perror("unlink error");return -1;}}struct sockaddr_un sun;sun.sun_family = AF_UNIX;strcpy(sun.sun_path, "./mysocket");if (bind(sfd, (struct sockaddr*)&sun, sizeof(sun)) == -1){perror("bind error");return -1;}if (listen(sfd, 128) == -1){perror("listen error");return -1;}struct sockaddr_un cun;socklen_t socklen = sizeof(cun);int newfd = -1;if ((newfd = accept(sfd, (struct sockaddr*)&cun, &socklen)) == -1){perror("accept error");return -1;}char rbuf[128] = "";while(1){bzero(rbuf, sizeof(rbuf));recv(sfd, rbuf, strlen(rbuf), 0);printf("[%s] : %s\n", cun.sun_path, rbuf);strcat(rbuf, "*_*");send(newfd, rbuf, strlen(rbuf), 0);printf("发送成功\n");}close(sfd);close(newfd);return 0;
}
#include "test.h"#define SER_IP "192.168.42.106"
#define SER_PORT 8888int main(int argc, const char *argv[])
{int sfd = socket(AF_UNIX, SOCK_STREAM, 0);if(sfd == -1){perror("socket error");return -1;}if (access("./mysocket1", F_OK) == -1){if (unlink("./mysocket1") == -1){perror("unlink error");return -1;}}struct sockaddr_un sun;sun.sun_family = AF_UNIX;strcpy(sun.sun_path, "./mysocket1");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, "./mysocket1");if (connect(sfd, (struct sockaddr*)&cun, sizeof(cun)) == -1){perror("connect error");return -1;}char wbuf[128] = "";while(1){bzero(wbuf, sizeof(wbuf));printf("请输入>>>");fgets(wbuf, sizeof(wbuf), stdin);wbuf[strlen(wbuf) - 1] = 0;send(sfd, wbuf, strlen(wbuf), 0);printf("发送成功\n");if (strcmp(wbuf, "quit") == 0){break;}bzero(wbuf, sizeof(wbuf));recv(sfd, wbuf, strlen(wbuf), 0);printf("收到消息:%s\n", wbuf);}close(sfd);return 0;
}

4>报域式嵌套字

#include "test.h"#define SER_IP "192.168.42.106"
#define SER_PORT 8888int main(int argc, const char *argv[])
{int sfd = socket(AF_UNIX, SOCK_DGRAM, 0);if(sfd == -1){perror("socket error");return -1;}if (access("./linux1", F_OK) == -1){if (unlink("./linux1") == -1){perror("unlink error");return -1;}}struct sockaddr_un sun;sun.sun_family = AF_UNIX;strcpy(sun.sun_path, "./linux1");if (bind(sfd, (struct sockaddr*)&sun, sizeof(sun)) == -1){perror("bind error");return -1;}struct sockaddr_un cun;socklen_t socklen = sizeof(cun);char rbuf[128] = "";while(1){bzero(rbuf, sizeof(rbuf));recvform(sfd, rbuf, strlen(rbuf), 0, (struct sockaddr*)&cun, &socklen);printf("收到消息:%s\n", rbuf);strcat(rbuf, "*_*");sendto(sfd, rbuf, strlen(rbuf), 0, (struct sockaddr*)&cun, socklen);}close(sfd);return 0;
}
#include "test.h"#define SER_IP "192.168.42.106"
#define SER_PORT 8888int main(int argc, const char *argv[])
{int sfd = socket(AF_UNIX, SOCK_DGRAM, 0);if(sfd == -1){perror("socket error");return -1;}if (access("./linux2", F_OK) == -1){if (unlink("./linux2") == -1){perror("unlink error");return -1;}}struct sockaddr_un sun;sun.sun_family = AF_UNIX;strcpy(sun.sun_path, "./linux2");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, "./linux1");char wbuf[128] = "";while(1){bzero(wbuf, sizeof(wbuf));printf("请输入>>>");fgets(wbuf, sizeof(wbuf), stdin);wbuf[strlen(wbuf) - 1] = 0;sendto(sfd, wbuf, strlen(wbuf), 0, (struct sockaddr*)&cun, sizeof(cun));printf("发送成功\n");bzero(wbuf, sizeof(wbuf));recvfrom(sfd, wbuf, strlen(wbuf), 0, NULL, NULL);printf("收到消息:%s\n", wbuf);}close(sfd);return 0;
}

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

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

相关文章

Python基础:标准库 -- Time 时间的访问和转换

1. 官方文档 time --- 时间的访问和转换 — Python 3.12.2 文档 2. 准备知识 协调世界时 UTC (Coordinated Universal Time) 协调世界时(Coordinated Universal Time,UTC),是一种国际标准的时间表示方式。UTC 是以原子钟为基础…

【代码】Python3|无GUI环境中使用Seaborn作图的学习路线及代码(阴影折线图)

我有个需求是需要画图,让GPT帮我生成了一下学习计划。 学习路线依照GPT的来的,使用的Prompt工具是https://github.com/JushBJJ/Mr.-Ranedeer-AI-Tutor。 文章目录 PrerequisiteMain Curriculum1.1 Seaborn介绍Seaborn基础保存图形为文件练习 1.2 单变量数…

产品推荐 - GX-SOPC-5CEFA5-M484 FPGA核心开发板

● 核心板采用8层板精心设计 ● FPGA:采用Intel(ALTERA) Cyclone V 5CEFA5,Les为77K,内嵌存储器为4460Kb,硬件乘法器为300个,最大等效门数约2300万门;新增DSP Block(150…

ssh远程登录Permission denied (publickey,gssapi-keyex,gssapi-with-mic)

SSH登录提示 Permission denied (publickey,gssapi-keyex,gssapi-with-mic).vi /etc/ssh/sshd_config PermitRootLogin yes PubkeyAuthentication yes PasswordAuthentication yes 重启ssh服务,并且设置开机自启服务systemctl restart sshd

pytorch项目代码记录

1.超过二维的张量写进csv #(20,204,273) -> (4080,273) ycsv []for i in range(20):ycsv.append(y[i, 8, :, :].reshape(204,273))with open(y.csv,w,encodingutf-8) as y_obj:writer csv.writer(y_obj)for j in range(20):writer.writerows(ycsv[j])data pd.read_csv(y…

STM32单片机-多串口printf()问题

目录: 一、概述 二、设置标志位选择需要的串口 三、更优解决方法 一、概述 printf()函数非常好用,但是重定义后只适用于单个串口,需要串口2使用printf(),需要重新定向。有关内容移步STM32关于printf重定向到串口。先贴一下双串…

Unity3D

一、C# 输入输出 二、三维数学

线性dp P1004 【方格取数】题解

代码比较简单的一题,重在思路(除非写假了) 传送门https://www.luogu.com.cn/problem/P1004 我的最初思路是两次二维dp,即贪心的取,用pre记录前一个位置,只有80pts,要是是在蓝桥拿分就可以跑路…

使用reduce递归获取有多层嵌套的数组中的children

常见的多层嵌套的数组,如下 const items [{id: 1,name: "item1",children: [{id: 11,name: "item11",children: [{id: 111, name: "item111"},{id: 112, name: "item112"}]},{id: 12,name: "item12",children:…

MySQL--优化(SQL语句执行慢,如何分析)

MySQL–优化(SQL语句执行慢,如何分析) 定位慢查询SQL执行计划索引 存储引擎索引底层数据结构聚簇和非聚簇索引索引创建原则索引失效场景 SQL优化经验 一、如何分析 聚合查询: 对于涉及大量数据的聚合操作,如果可能的…

【c++】STL--List的实现

目录 一. List的数据结构 二. List实现的基本框架 1. list的结点结构类 2. List的迭代器类 正向迭代器 反向迭代器 3. List操作接口的实现 1. 默认成员函数 构造函数 和 析构函数 拷贝构造函数 和 赋值运算符重载 2. 修改相关函数接口 insert 和 erase …

thinkphp实现对两个字段或or条件搜索

thinkphp实现对两个字段或or条件搜索 $mD(Adstext);$data[adstext_title]array(like,"%{$keyword}%");$data[id]array(like,"%{$keyword}%");$data[_logic] or; //条件或$arr$m->where($data)->relation(true)->select(); // du…

R语言简介、环境与基础语法及注释

R语言简介、环境与基础语法及注释 一、R语言1.R语言简介2.R语言官网3.R语言中国的镜像网站4.R语言下载5.R语言的历史 二、R语言环境1.Windows安装1.1 去 R 语言下载的镜像站点的列表下载1.2 选择版本进行下载1.3 点击运行1.4 一路默认,安装完毕! 2.Linux…

【AI视野·今日Robot 机器人论文速览 第八十期】Fri, 1 Mar 2024

AI视野今日CS.Robotics 机器人学论文速览 Fri, 1 Mar 2024 Totally 32 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers Humanoid Locomotion as Next Token Prediction Authors Ilija Radosavovic, Bike Zhang, Baifeng Shi, Jathushan Rajasegaran…

CCF会议期刊(计算机网络)

中国计算机学会推荐国际学术会议 序号会议简称会议全称分类类型专业领域1SIGCOMMACM International Conference on Applications, Technologies, Architectures, and Protocols for Computer CommunicationA会议计算机网络2MobiComACM International Conference on Mobile Com…

【笔记】MTK与高通平台emergency APN配置差异

协议规定 根据3GPP协议,emergency APN配置需要注意。 3GPPspec TS24.301 6.5.1.2 UE requested PDN connectivity procedure initiation In order to request a PDN connection for emergency bearer services, the UE shall not include an APN in the PDN CONNE…

❤ 前端实现发邮件

❤ 前端实现发邮件 1、Nodejs使用nodemailer发邮件 一、开启发送者邮箱的SMTP服务 QQ邮箱开启SMTP服务教程 163邮箱开启SMTP服务教程 二、安装nodemailer模块 在node项目目录下,使用cmd运行下面命令 npm install nodemailer --savenodemailer官网 https://nod…

ShardingSphere-SQL 解析 Issue 处理流程

ShardingSphere-SQL 解析 Issue 处理流程 这是之前给社区写的 SQL 解析 Issue 的处理流程,可以帮助社区用户快速参与到 ShardingSphere-SQL 解析任务当中。 ShardingSphere SQL 解析 issue 列表 Issue 背景说明 当前 Issue 使用自定义的爬虫脚本从对应的数据库官…

MySQL-----视图

一 视图 ▶ 介绍 视图view是一个虚拟表,非真实存在,其本质是根据SQL语句获取动态的数据集,并为其命名,用户使用时只需使用视图名称即可获取结果集,并可以将其当作表来使用。 数据库中存放了视图的定义&…

Java程序员修炼之道 之 Logging

1. 一个最基本的例子 使用Logging框架写Log基本上就三个步骤 引入loggerg类和logger工厂类 声明logger 记录日志 下面看一个例子 //1. 引入slf4j接口的Logger和LoggerFactory import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class UserService { //…