当前位置: 首页 > news >正文

TCP/UDP模型:2024/2/29

作业1:TCP模型

服务器端:

#include <myhead.h>
#define SER_IP "192.168.199.129"
#define SER_PORT 8899int main(int argc, const char *argv[])
{//1.创建用于连接的套接字文件int sfd=socket(AF_INET,SOCK_STREAM,0);if(sfd==-1){perror("socket error");return -1;}//2.绑定端口号和IP地址//填充地址信息结构体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");//3.启动监听if(listen(sfd,128)==-1){perror("listen error");return -1;}printf("listen success\n");//4.接受请求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);//5.数据收发char sbuf[128]="";while(1){//清空数组bzero(sbuf,sizeof(sbuf));//接收客户端发来的消息int res=recv(newfd,sbuf,sizeof(sbuf),0);if(res==0){break;}//回复客户端发来的消息strcat(sbuf," !!!");send(newfd,sbuf,strlen(sbuf),0);}//6.关闭套接字文件close(newfd);close(sfd);return 0;
}

客户端:

#include <myhead.h>
#define SER_IP "192.168.199.129"
#define SER_PORT 8899int main(int argc, const char *argv[])
{//1.创建用于通信的套接字int cfd=socket(AF_INET,SOCK_STREAM,0);if(cfd==-1){perror("socket error");return -1;}//2.连接服务器//填充地址信息结构体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(cfd,(struct sockaddr*)&sin,sizeof(sin))==-1){perror("connect error");return -1;}//3.进行数据的收发char wbuf[128]="";while(1){//清空数组bzero(wbuf,sizeof(wbuf));//从终端写入数据printf("请输入>>>");fgets(wbuf,sizeof(wbuf),stdin);wbuf[strlen(wbuf)-1]='\0';//将数据发送到服务端send(cfd,wbuf,strlen(wbuf),0);printf("发送成功\n");if(strcmp(wbuf,"quit")==0){break;}//接收服务端发送来的消息//清空数组bzero(wbuf,sizeof(wbuf));recv(cfd,wbuf,sizeof(wbuf),0);printf("接收到的数据为:%s\n",wbuf);}//4.关闭套接字close(cfd);return 0;
}

效果图:

作业2:UDP模型

服务器端:

#include <myhead.h>
#define SER_IP "192.168.199.129"
#define SER_PORT 9988
int main(int argc, const char *argv[])
{//1.创建用于通信的套接字int sfd=socket(AF_INET,SOCK_DGRAM,0);if(sfd==-1){perror("socket error");return -1;}printf("socket success\n");//2.绑定端口号//填充地址信息结构体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");//3.进行数据收发//定义客户端地址信息结构体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);if(strcmp(rbuf,"quit")==0){break;}//向客户端回复消息strcat(rbuf," !!!");sendto(sfd,rbuf,sizeof(rbuf),0,(struct sockaddr*)&cin,socklen);}//4.关闭套接字close(sfd);return 0;
}

客户端:

#include <myhead.h>
#define SER_IP "192.168.199.129"
#define SER_PORT 9988
int main(int argc, const char *argv[])
{//1.创建用于通信的套接字int cfd=socket(AF_INET,SOCK_DGRAM,0);if(cfd==-1){perror("socket error");return -1;}//数据收发char wbuf[128]="";//填充地址信息结构体struct sockaddr_in sin;socklen_t socklen=sizeof(sin);sin.sin_family=AF_INET;sin.sin_port=htons(SER_PORT);sin.sin_addr.s_addr=inet_addr(SER_IP);while(1){//清空数组bzero(wbuf,sizeof(wbuf));//从终端获取数据printf("请输入>>>");fgets(wbuf,sizeof(wbuf),stdin);wbuf[strlen(wbuf)-1]='\0';//将数据发送到服务端sendto(cfd,wbuf,sizeof(wbuf),0,(struct sockaddr*)&sin,socklen);printf("发送成功\n");if(strcmp(wbuf,"quit")==0){break;}//接收从服务端回复的消息recvfrom(cfd,wbuf,sizeof(wbuf),0,NULL,NULL);printf("接收到的消息为:%s\n",wbuf);}//关闭套接字close(cfd);return 0;
}

效果图:

作业3:思维导图

相关文章:

TCP/UDP模型:2024/2/29

作业1&#xff1a;TCP模型 服务器端&#xff1a; #include <myhead.h> #define SER_IP "192.168.199.129" #define SER_PORT 8899int main(int argc, const char *argv[]) {//1.创建用于连接的套接字文件int sfdsocket(AF_INET,SOCK_STREAM,0);if(sfd-1){per…...

微信如何设置自动回复消息,提升沟通效率的?

在日常微信聊天过程中&#xff0c;我们可能会频繁遇到相同问题的客户提问&#xff0c;特别是对于从事销售工作的朋友们而言&#xff0c;客户添加好友后的第一句话常常为“在吗”或“你好”。当我们拥有大量好友&#xff0c;手动逐一回复可能会耗费大量时间。因此&#xff0c;自…...

PCIE的BAR空间

1.PCIe 简介 PCIe&#xff08;Peripheral Component Interconnect Express&#xff09;是一种高速 串行计算机扩展总线标准&#xff0c;主要用于连接主板上的中央处理器&#xff08;CPU&#xff09;和 各种外部设备&#xff0c;如显卡、声卡、硬盘等。PCIe 总线取代了传统的 PC…...

11.互信息-机器学习模型性能的常用的评估指标

互信息&#xff08;Mutual Information&#xff09;是机器学习中常用的一种评估指标&#xff0c;特别是在无监督学习和聚类分析中。它用于衡量两个随机变量之间的相关性或相似性。 定义 给定两个随机变量X和Y&#xff0c;它们的互信息I(X;Y)定义如下&#xff1a; 其中&…...

SpringCloud(18)之Sleuth +Zipkin链路追踪

一、Zipkin介绍 Zipkin是一个开放源代码分布式的跟踪系统&#xff0c;它可以帮助收集服务的时间数据&#xff0c;以解决微服务架构中的延迟问 题&#xff0c;包括数据的收集、存储、查找和展现。每个服务向zipkin报告计时数据&#xff0c;zipkin会根据调用关系通 过Zipkin UI…...

GVA快速使用

1. clone 代码&#xff0c; 使用goland打开Server目录&#xff0c; 使用vsc打开前端web目录&#xff0c;运行后端&#xff0c;前端 gin-vue-admin后台管理系统 - 知乎 (zhihu.com) 2.了解端口配置 参考&#xff0c; 基于Go的后台管理框架Gin-vue-admin_go vue admin-CSDN博客…...

Linux文本处理三剑客:awk(内置函数详解笔记)

Linux系统中&#xff0c;AWK 是一个非常强大的文本处理工具&#xff0c;它的内置函数使得对文本数据进行处理更加高效和便捷。 本文将介绍 AWK 内置函数的几种主要类型&#xff1a; 算数函数字符串函数时间函数位操作函数其他常用函数 我们将使用一个示例文本文件来演示这些函…...

C++调用lua函数

C 调用Lua全局变量(普通) lua_getglobal(lua, "width");int width lua_tointeger(lua,-1);lua_pop(lua,1);std::cout << width << std::endl;lua_close(lua); 这几行代码要放到lua_pcall(lua, 0,0,0);之后才可以. C给lua传递变量 lua_pushstring(lua, …...

java找工作之Mybatis(入门及xml配置相关)

Mybatis 学习Mybatis就要学会查看官网&#xff0c;官网地址如下&#xff1a;<MyBatis中文网 > 1、简介 1.1什么是Mybatis MyBatis 是一款优秀的持久层框架&#xff0c;它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取…...

如何保证 HTTPS 证书的有效性?

随着互联网的蓬勃发展&#xff0c;保障用户在网络上的隐私和安全成为至关重要的任务。HTTPS证书&#xff0c;作为一种安全套接字层协议&#xff0c;扮演着网站安全的守护者。 1. 什么是HTTPS 证书&#xff1f; HTTPS&#xff08;HyperText Transfer Protocol Secure&#xff…...

Qt 简约美观的动画 摆钟风格 第十季

&#x1f60a; 今天给大家分享一个摆钟风格的加载动画 &#x1f60a; 效果如下: 最近工作忙起来了 , 后续再分享其他有趣的加载动画吧. 一共三个文件 , 可以直接编译运行 //main.cpp #include "LoadingAnimWidget.h" #include <QApplication> #include <Q…...

Vue 3 中的 Composition API 详解

Vue.js&#xff0c;作为前端领域流行的框架之一&#xff0c;以其响应式数据绑定和组件化开发赢得了广大开发者的喜爱。随着前端技术的不断发展和项目复杂度的增加&#xff0c;Vue 团队推出了 Vue 3&#xff0c;并引入了 Composition API&#xff0c;以更好地满足复杂应用的需求…...

利用Python爬取高德地图全国地铁站点信息

利用Python中的requests库进行地铁站点信息的获取,同时将数据保存在本机excel中 # 首先引入所需要的包 import requests from bs4 import BeautifulSoup import pandas as pd import json# 发送 GET 请求获取网页内容 url http://map.amap.com/subway/index.html response r…...

Vue 3 中的 Teleport 特性详解

引言 在 Vue 3 中&#xff0c;引入了一个名为 Teleport 的新特性。这个特性允许开发者将组件的子组件“传送”到 DOM 中的任意位置&#xff0c;而不仅仅是它们的直接父级内部。这一功能在处理如模态框、弹出菜单、提示框等需要从其原始位置在视觉上移动到其他地方的用户界面元…...

小白的matlab简单应用

基本概念 1、数组array 数组是一个更通用的数据结构&#xff0c;可以是一维、二维或多维的。 一维数组通常被称为向量。 二维数组可以被视为矩阵。 多维数组可以用来表示更高维度的数据&#xff0c;例如三维数组可以表示一系列的矩阵。 用过的函数 20240229 1、读取excel文件…...

边缘计算网关在机床生产中的应用-天拓四方

随着工业4.0的推进&#xff0c;物联网&#xff08;IoT&#xff09;技术在各个工业领域中的应用日益广泛。特别是在机床行业&#xff0c;物联网技术的引入不仅提高了生产效率&#xff0c;还实现了对机床设备的实时监控和远程维护。在这一背景下&#xff0c;边缘计算网关的角色愈…...

maven配置文件(一)Settings配置

一、仓库 1、关系 我们依赖的外部服务是需要有地方进行存储的&#xff0c;而存储的地方就称之为仓库。其中仓库又分为本地仓库、中央仓库、镜像仓库、私服。 &#xff08;1&#xff09;本地仓库 当项目在本地编译或运行时&#xff0c;直接加载本地的依赖服务无疑是最快的。默…...

选择何种操作系统作为网站服务器

选择操作系统时&#xff0c;需考虑稳定性、安全性、成本、兼容性和技术支持等因素&#xff0c;常见选项有Windows Server和Linux发行版。 选择网站服务器的操作系统是一个关键的决策&#xff0c;因为它将影响到网站的性能、稳定性、安全性以及未来的扩展性&#xff0c;目前市场…...

【LeetCode】升级打怪之路 Day 11:栈的应用、单调栈

今日题目&#xff1a; Problem 1: 栈的应用 155. 最小栈 | LeetCode20. 有效的括号 | LeetCode150. 逆波兰表达式求值 | LeetCode Problem 2: 单调栈 496. 下一个更大元素 I739. 每日温度503. 下一个更大元素 II 目录 Problem 1&#xff1a;栈 - “先进后出”的应用LC 155. 最…...

题目 1454: 蓝桥杯历届试题-蚂蚁感冒

题目描述: 长100厘米的细长直杆子上有n只蚂蚁。它们的头有的朝左&#xff0c;有的朝右。 每只蚂蚁都只能沿着杆子向前爬&#xff0c;速度是1厘米/秒。 当两只蚂蚁碰面时&#xff0c;它们会同时掉头往相反的方向爬行。 这些蚂蚁中&#xff0c;有1只蚂蚁感冒了。并且在和其它蚂蚁…...

BERT文本分割-中文-通用领域一文详解:为什么它比传统规则分段更准?

BERT文本分割-中文-通用领域一文详解&#xff1a;为什么它比传统规则分段更准&#xff1f; 你有没有遇到过这种情况&#xff1f;拿到一份长长的会议记录或者讲座文稿&#xff0c;从头到尾密密麻麻全是字&#xff0c;没有段落&#xff0c;没有结构&#xff0c;读起来特别费劲&a…...

DeerFlow企业级部署:支持大规模并发请求的架构升级

DeerFlow企业级部署&#xff1a;支持大规模并发请求的架构升级 1. 企业级部署的核心挑战 当您开始考虑将DeerFlow从个人研究助手升级为企业级应用时&#xff0c;第一个需要面对的问题就是并发处理能力。单个用户的研究请求可能很轻松&#xff0c;但当几十个甚至上百个用户同时…...

万象视界灵坛从零开始:开源多模态平台GPU算力适配与显存调优指南

万象视界灵坛从零开始&#xff1a;开源多模态平台GPU算力适配与显存调优指南 1. 平台概述与核心价值 万象视界灵坛是一款基于OpenAI CLIP模型的高级多模态智能感知平台&#xff0c;它将复杂的语义对齐任务转化为直观的像素风格交互体验。平台采用CLIP-ViT-L/14作为核心模型&a…...

如何快速构建全响应式应用:Reactor Core 与 WebFlux 集成终极指南

如何快速构建全响应式应用&#xff1a;Reactor Core 与 WebFlux 集成终极指南 【免费下载链接】reactor-core Non-Blocking Reactive Foundation for the JVM 项目地址: https://gitcode.com/gh_mirrors/re/reactor-core 在当今高并发、低延迟的微服务架构时代&#xff…...

Element UI Radio组件多选换行终极解决方案(附完整代码示例)

Element UI Radio组件多选换行终极解决方案&#xff08;附完整代码示例&#xff09; 在企业级后台管理系统开发中&#xff0c;表单控件的美观性和功能性同样重要。Element UI作为Vue.js生态中广泛使用的组件库&#xff0c;其Radio组件在多选场景下的换行问题常常困扰开发者。本…...

[特殊字符] 第85课:戳气球

想系统提升编程能力、查看更完整的学习路线&#xff0c;欢迎访问 AI Compass&#xff1a;https://github.com/tingaicompass/AI-Compass 仓库持续更新刷题题解、Python 基础和 AI 实战内容&#xff0c;适合想高效进阶的你。&#x1f4d6; 第85课:戳气球模块:动态规划 | 难度:Ha…...

开题之后,如何继续用图和表推进本科毕业设计与毕业论文写作?——以系统开发类和网络规划设计类选题为例

把图和表从“开题工具”和“写作材料”&#xff0c;提升为本科生理解和实践工程化思想的方法支架。 作者&#xff1a;非凡大爹&#xff5c;版本&#xff1a;v2.0&#xff5c;日期&#xff1a;2026-04-06&#xff5c;DocID&#xff1a;GRAD-2026S-PG-02 原创声明&#xff1a;本…...

vokoscreenNG完全指南:开源屏幕录制工具的全方位应用手册

vokoscreenNG完全指南&#xff1a;开源屏幕录制工具的全方位应用手册 【免费下载链接】vokoscreenNG vokoscreenNG is a powerful screencast creator in many languages to record the screen, an area or a window (Linux only). Recording of audio from multiple sources i…...

Qwen3.5-9B中微子:探测器结构理解+相互作用模拟+数据分析提示

Qwen3.5-9B中微子&#xff1a;探测器结构理解相互作用模拟数据分析提示 1. 项目概述 Qwen3.5-9B是一款拥有90亿参数的开源大语言模型&#xff0c;具备强大的逻辑推理、代码生成和多轮对话能力。该模型支持多模态理解&#xff08;图文输入&#xff09;和长上下文处理&#xff…...

HG-ha/MTools生产环境部署:媒体公司后期处理提效案例

HG-ha/MTools生产环境部署&#xff1a;媒体公司后期处理提效案例 1. 项目概述与核心价值 HG-ha/MTools是一款开箱即用的现代化桌面工具集&#xff0c;专为媒体内容处理而设计。它集成了图片处理、音视频编辑、AI智能工具和开发辅助等多项功能&#xff0c;支持跨平台GPU加速&a…...