2024.02.29作业

1. TCP模型

server

#include "test.h"#define SER_IP "192.168.191.128"
#define SER_PORT 9999int main(int argc, char const *argv[])
{int sfd = -1;sfd = socket(AF_INET, SOCK_STREAM, 0);if (-1 == sfd){perror("socket error");return -1;}printf("sfd = %d\n", sfd);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;}if (listen(sfd, 128) == -1){perror("listen error");return -1;}struct sockaddr_in cin;socklen_t socklen = sizeof(cin);int newfd = accept(sfd, (struct sockaddr*)&cin, &socklen);if (newfd == -1){perror("accept error");return -1;}printf("newfd = %d\n", newfd);printf("IP: %s, port: %d\n", inet_ntoa(cin.sin_addr), ntohs(cin.sin_port));char rbuf[128] = "";while (1){bzero(rbuf, sizeof(rbuf));int res = read(newfd, rbuf, sizeof(rbuf));if (res == 0){printf("客户端下线\n");break;}printf("[%s:%d] : %s\n", inet_ntoa(cin.sin_addr), ntohs(cin.sin_port), rbuf);strcat(rbuf, "*_*");write(newfd, rbuf, strlen(rbuf));}close(sfd);close(newfd);return 0;
}

client

#include "test.h"#define SER_IP "192.168.191.128"
#define SER_PORT 9999int main(int argc, char const *argv[])
{int sfd = -1;sfd = socket(AF_INET, SOCK_STREAM, 0);if (-1 == sfd){perror("socket error");return -1;}printf("sfd = %d\n", sfd);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 (connect(sfd, (struct sockaddr*)&sin, sizeof(sin)) == -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, sizeof(wbuf), 0);printf("收到的消息: %s\n", wbuf);}close(sfd);return 0;
}

2. UDP模型

server

#include "test.h"#define SER_IP "192.168.191.128"
#define SER_PORT 9999int main(int argc, char const *argv[])
{int sfd = -1;sfd = socket(AF_INET, SOCK_DGRAM, 0);if (-1 == sfd){perror("socket error");return -1;}printf("sfd = %d\n", sfd);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;}printf("bind success\n");struct sockaddr_in cin;socklen_t socklen = sizeof(cin);char rbuf[128] = "";while (1){bzero(rbuf, sizeof(rbuf));recvfrom(sfd, rbuf, sizeof(rbuf), 0, (struct sockaddr*)&cin, &socklen);printf("收到消息: %s\n", rbuf);strcat(rbuf, "*_*");if (sendto(sfd, rbuf, sizeof(rbuf), 0, (struct sockaddr*)&cin, socklen) == -1){perror("sendto error");return -1;}}close(sfd);return 0;
}

client

#include "test.h"#define SER_IP "192.168.191.128"
#define SER_PORT 9999int main(int argc, char const *argv[])
{int sfd = -1;sfd = socket(AF_INET, SOCK_DGRAM, 0);if (-1 == sfd){perror("socket error");return -1;}printf("sfd = %d\n", sfd);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 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*)&sin, sizeof(sin));printf("发送成功\n");if (strcmp(wbuf, "quit") == 0){break;}bzero(wbuf, sizeof(wbuf));recvfrom(sfd, wbuf, sizeof(wbuf), 0, NULL, NULL);printf("收到的消息: %s\n", wbuf);}close(sfd);return 0;
}

思维导图

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

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

相关文章

Java生成 word报告

Java生成 word报告 一、方案比较二、Apache POI 生成三、FreeMarker 生成 在网上找了好多天将数据库信息导出到 word 中的解决方案,现在将这几天的总结分享一下。总的来说,Java 导出 word 大致有 5 种。 一、方案比较 1. Jacob Jacob 是 Java-COM Bri…

ECMAScript6

课程链接 目录 相关介绍什么是ECMA什么是ECMAScript为什么学习ES6 letconst变量解构赋值模板字符串对象简化写法箭头函数函数参数的默认值rest参数扩展运算符Symbol迭代器生成器函数与调用Promise介绍与基本用法Promise封装读取文件Promise.prototype...then方法Promise.catch…

光影交织:汽车穿越隧道的视觉盛宴

在繁忙的城市中,隧道成为了连接两端的重要通道。而对于汽车来说,穿越隧道不仅是一次简单的空间转移,更是一场融合了视觉、技术与安全的独特体验。 当汽车缓缓驶入隧道,外界的光线逐渐减弱,隧道内部的光线开始发挥作用。…

向量数据库Chroma教程

引言 随着大模型的崛起,数据的海洋愈发浩渺无垠。受限于token的数量,无数的开发者们如同勇敢的航海家,开始在茫茫数据之海中探寻新的路径。他们选择了将浩如烟海的知识、新闻、文献、语料等,通过嵌入算法(embedding)的神秘力量,转化为向量数据,存储在神秘的Chroma向量…

JavaScript基础知识(三)

JavaScript基础知识(三) 一、事件1. 事件绑定2.事件流2.1 事件捕获与事件冒泡 3.事件对象扩展3.1 阻止事件冒泡3.2 事件默认行为 4.事件委托5.事件类型5.1 鼠标事件5.2 键盘事件5.3 触屏事件 二、计时器方法1. setInterval 与 clearInterval2. setTimeou…

【Unity】使用ScriptableObject存储数据

1.为什么要用ScriptableObject? 在游戏开发中,有大量的配置数据需要存储,这个时候就需要ScriptableObject来存储数据了。 很多人会说我可以用json、xml、txt,excel等等 但是你们有没有想过,假设你使用的是json&#x…

LeetCode148.排序链表

题目 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 输入:head [4,2,1,3] 输出:[1,2,3,4] 输入:head [-1,5,3,4,0] 输出:[-1,0,3,4,5] 输入:head [] 输出:[] 思路…

通过GitHub探索Python爬虫技术

1.检索爬取内容案例。 2.找到最近更新的。(最新一般都可以直接运行) 3.选择适合自己的项目,目前测试下面画红圈的是可行的。 4.方便大家查看就把代码粘贴出来了。 #图中画圈一代码 import requests import os import rewhile True:music_id input("请输入歌曲…

openGauss学习笔记-236 openGauss性能调优-SQL调优-Query执行流程

文章目录 openGauss学习笔记-236 openGauss性能调优-SQL调优-Query执行流程236.1 Query执行流程236.1.1 调优手段之统计信息236.1.2 调优手段之GUC参数236.1.3 调优手段之底层存储236.1.4 调优手段之SQL重写 openGauss学习笔记-236 openGauss性能调优-SQL调优-Query执行流程 S…

Java 解决异步 @Async 失效问题

1.问题描述 使用Async进行异步处理时,异步没有生效 2.原因分析 经过排查后发现是因为使用Async的方法没有跨2个Service导致的 错误示例 控制器接口 > 直接调用 custAdminService.importCBuy() 3.解决方案 Controller接口不变,多添加一层Service&a…

【python开发】网络编程(上)

这里写目录标题 一、必备基础(一)网络架构1、交换机2、路由器3、三层交换机4、小型企业基础网络架构5、家庭网络架构6、互联网 (二)网络核心词汇1、子网掩码和IP2、DHCP3、内网和公网IP4、云服务器5、端口6、域名 二、网络编程案例…

大数据分析课----实时更新

1:Anaconda3 windows 安装 : 去官网下载; 然后安装好直接点next 点 i agree; 自己的电脑选第一个;学校的话选All Users ; 选择自己存放的目录; 选前三个; 安装即可; 一直…

UE4 Niagara 关卡3.4官方案例解析

Texture sampling is only supported on the GPU at the moment.(纹理采样目前仅在GPU上受支持) 效果:textures can be referenced within GPU particle systems。this demo maps a texture to a grid of particles(纹理可以在GPU粒子系统中被引用这个演…

牛客网C++专项题目整理(1)

1. 若有定义语句:char s[3][10],(*k)[3],*p;则以下赋值语句错误的是 1.p s; 2.p k; 3.p s[0]; 4.k s; 答案:124 char s[3][10] s 是数组指针,类型为char (*)[3],所指向的每个数组长度为10; char (*k)[3] k是一个数组指针&a…

【C++庖丁解牛】初始化列表 | Static对象 | 友元函数

📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 目录 1. 再谈构造函数1.1 …

小程序常用样式和组件

常用样式和组件 1. 组件和样式介绍 在开 Web 网站的时候: 页面的结构由 HTML 进行编写,例如:经常会用到 div、p、 span、img、a 等标签 页面的样式由 CSS 进行编写,例如:经常会采用 .class 、#id 、element 等选择器…

【计算机网络】TCP 如何实现可靠传输

TCP通过三次握手建立连接,四次挥手释放连接,确保连接建立和连接释放的可靠。 序列号、检验和、确认应答信号、重发机制、连接管理、窗口控制、流量控制、拥塞控制 标准回答 可靠传输就是通过TCP连接传送的数据是没有差错、不会丢失、不重复并且按序到达的…

React之数据绑定以及表单处理

一、表单元素 像<input>、<textarea>、<option>这样的表单元素不同于其他元素&#xff0c;因为他们可以通过用户交互发生变化。这些元素提供的界面使响应用户交互的表单数据处理更加容易 交互属性&#xff0c;用户对一下元素交互时通过onChange回调函数来监听…

【李沐论文精读】GAN精读

论文&#xff1a;Generative adversarial nets 参考&#xff1a;GAN论文逐段精读、生成对抗网络、李沐视频精读系列 一、介绍 什么是GAN? GAN(Generative adversarial network&#xff0c;生成对抗网络&#xff09;&#xff0c;它由生成器G&#xff08;Generator Neural Netwo…

持安科技孙维伯:零信任在攻防演练下的最佳实践|DISCConf 2023

近日&#xff0c;在2023数字身份安全技术大会上&#xff0c;持安科技联合创始人孙维伯应主办方的特别邀请&#xff0c;发表了主题为“零信任在攻防演练下的最佳实践”的演讲。 孙维伯在2023数字身份安全技术大会上发表演讲 以下为本次演讲实录&#xff1a; 我是持安科技的联合…