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

【网络编程】TCP通信基础模型实现

tcpSer.c

#include <myhead.h>
#define SER_IP "192.168.119.143" // 设置IP地址
#define SER_PORT 6666			 // 设置端口号
int main(int argc, const char *argv[])
{// 1.创建socketint serfd = socket(AF_INET, SOCK_STREAM, 0);// 参数1表示ipv4// 参数2表示tcp通信// 参数3表示通讯协议if (serfd == -1){perror("socket error");return -1;}// 将端口号快速重用int reuse = 1;if (setsockopt(serfd, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse)) == -1){perror("setsockopt 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); // 设置ip地址if (bind(serfd, (struct sockaddr *)&sin, sizeof(sin)) == -1){perror("bind error");return -1;}printf("bind success\n");// 3.设置为监听if (listen(serfd, 128)){perror("listen error");return -1;}printf("listen success\n");// 4.连接struct sockaddr_in cin;socklen_t socklen = sizeof(cin);int newfd = accept(serfd, (struct sockaddr *)&cin, &socklen);if (newfd == -1){perror("accept error");return -1;}printf("[%s:%d]accept success\n", inet_ntoa(cin.sin_addr), ntohs(cin.sin_port));// 5.接收数据char buf[128] = "";while (1){// 数据初始化bzero(buf, sizeof(buf));int res = recv(newfd, buf, sizeof(buf), 0);if (res == -1){printf("读取失败\n");return -1;}else if (res == 0){printf("客户端以下线\n");return -1;}if (strcmp(buf, "quit") == 0){printf("服务端退出\n");break;}printf("[%s:%d]:%s\n", inet_ntoa(cin.sin_addr), ntohs(cin.sin_port), buf);bzero(buf, sizeof(buf));strcat(buf, "*-*");if (send(newfd, buf, sizeof(buf), 0) == -1){perror("send error");return -1;} // 回复消息printf("回复成功\n");}// 6.关闭close(newfd);return 0;
}

tcpCli.c

#include <myhead.h>
#define SER_IP "192.168.119.143"
#define SER_PORT 6666
#define CLI_IP "192.168.119.143"
#define CLI_PORT 8888
int main(int argc, const char *argv[])
{// 1.创建int clifd = socket(AF_INET, SOCK_STREAM, 0);if (clifd == -1){perror("socket error");return -1;}// 2.绑定struct sockaddr_in cin;cin.sin_family = AF_INET;cin.sin_port = htons(CLI_PORT);cin.sin_addr.s_addr = inet_addr(CLI_IP);if (bind(clifd, (struct sockaddr *)&cin, sizeof(cin)) == -1){perror("bind error");return -1;}printf("bind success\n");// 3.连接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(clifd, (struct sockaddr *)&sin, sizeof(sin)) == -1){perror("connect error");return -1;}printf("connect success\n");// 4.数据收发char buf[128] = "";while (1){bzero(buf, sizeof(buf));printf("请输入>>>");fgets(buf, sizeof(buf), stdin);buf[strlen(buf) - 1] = 0;if (send(clifd, buf, sizeof(buf), 0) == -1){perror("send error");return -1;}if (strcmp(buf, "quit") == 0){printf("客户端退出\n");break;}printf("发送成功\n");bzero(buf, sizeof(buf));recv(clifd, buf, sizeof(buf), 0);printf("收到服务器的消息:%s\n", buf);}// 5.关闭close(clifd);return 0;
}

效果展示

相关文章:

【网络编程】TCP通信基础模型实现

tcpSer.c #include <myhead.h> #define SER_IP "192.168.119.143" // 设置IP地址 #define SER_PORT 6666 // 设置端口号 int main(int argc, const char *argv[]) {// 1.创建socketint serfd socket(AF_INET, SOCK_STREAM, 0);// 参数1表示ipv4// 参数2表…...

css rem之2024

话题开始前 我们都知道1rem是等于html fontSize标签的字体大小的&#xff0c;我们主要用来做移动端网页设计稿等比例在手机上面的显示。 看到的问题 这个html fontsize的大小是通过js动态计算的&#xff0c;而这个js的运行时晚于html渲染的&#xff0c;所以会导致一个问题&am…...

python自动化笔记:pytest框架

目录 一、pytest介绍二、测试用例命名规则2.1、pytest命名规则2.2、python命名规范 三、pytest运行方式3.1、主函数方式3.2、命令行方式3.3、通过pytest.ini的配置文件运行&#xff08;常用&#xff09; 四、跳过测试用例4.1 无条件跳过4.2 有条件跳过 五、用例的前后置&#x…...

wpf 路径动画 举例

先&#xff0c;我们需要在XAML中定义一个Path&#xff0c;这个Path将定义动画的路线。然后&#xff0c;我们将使用DoubleAnimationUsingPath来沿着这个路径移动一个元素&#xff08;比如一个矩形&#xff09;。 <Window x:Class"WpfApp.MainWindow" xmlns"…...

【C++】classes and object 2.8 取地址及const取地址操作符重载

这两个默认成员函数一般不用重新定义 &#xff0c;编译器默认会生成。 #define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> using namespace std; class Date { public:Date* operator&(){return this;}const Date* operator&()const{return this;} privat…...

milvus helm k8s开启监控

https://milvus.io/docs/monitor.md 文章写的很清晰 &#xff0c;我这边做一下个人补充&#xff0c;初版可能只是配置&#xff0c;具体的grafana 监控报表后期补一下。 架构如下&#xff1a; values.yaml 配置 enabled: true 改为true metrics:enabled: trueserviceMonitor:…...

牛奶饮用学习笔记

1. 常见牛奶类型 1.1 蒙牛-每日鲜语-0脂肪鲜牛奶 项目每100mL NRV%能量146kJ 能量计算 250 mL 146 kJ / 100 mL 365 kJ 250\text{mL}\times146\text{kJ}/100\text{mL} 365\text{kJ} 250mL146kJ/100mL365kJ 1.2 伊利-舒化-高钙型无乳糖牛奶 项目每100mL NRV%能量269kJ …...

php防止页面重复刷新或者重复提交

2.核心代码 显示的逻辑&#xff1a; //获取防止刷新的唯一标识符,start $intFlag substr(md5(time()),6); $strFlag BAOXIAOSS_.$my_user_id.$intFlag; $smarty->assign(check_is_agin_post, $strFlag); //获取防止刷新的唯一标识符,end注意&#xff1a;前端页面提交加入…...

Springboot3 配置sql打印到控制台

一、pom.xml <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId><version>3.1.2</version></dependency> 二、application.yml com.lingyang.system # log4j2配…...

深入理解 GO 语言并发

1. 使用并发 在深入了解 Go 如何处理并发之前,先查看并发的概念。在计算机发展的早期阶段,计算机系统只有一个处理器负责执行所有指令。由于这种体系结构,计算机程序被编写成以串行的方式运行,在这种方式下,程序按照预定义的顺序逐个指令地执行。 随着计算机程序变得越来越…...

leetcode39组合总和

题目描述 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重复被选…...

【JPCS独立出版,EI稳定检索】2024年工业机器人与先进制造技术国际学术会议(IRAMT 2024,9月27-29)

2024年工业机器人与先进制造技术国际学术会议&#xff08;IRAMT 2024&#xff09;将于2024年9月27-29日在中国成都举办。 此次会议将围绕工业机器人、机电技术、机械及制造等领域的最新研究成果展开讨论&#xff0c;并广泛邀请了国内外领域内的著名专家与学者。会议旨在搭建一个…...

Fal.ai Flux 1-Pro/Viva.ai/哩布哩布AI:AI绘图部分免费工具+原图提示词Prompt

目录 #1 找软件 #2 懂提示词 #3 更难的一步&#xff0c;会英文 我个人认为&#xff0c;想要玩文生图&#xff0c;你要会3个步骤&#xff1a; #1 找软件 主流文生图软件&#xff1a;Midjourney、Stable Diffusion、Dall-E 3 巧了&#xff0c;我用的都是小众、免费的画笔工…...

C++学习笔记----2、使用C++进行优雅编程(十)---- 格式化

许多人因为编程风格的问题被搞得焦头烂额&#xff0c;就因为对于在if中使用几个空格争论不休&#xff0c;导致友谊的小船说翻就翻。如果公司有相应的编程规范&#xff0c;只能说你比较幸运。因为有可能你不喜欢这些规范&#xff0c;但做为一个正常人来讲&#xff0c;至少有规范…...

双指针| Java | (hot100) 力扣283, 11, 15, 42做题总结

leetcode 11 盛最多水的容器 双层for循环暴力 超出时间限制 class Solution {public int maxArea(int[] height) {int h0;int v0;for(int i0; i<height.length; i) {for(int ji1; j<height.length; j) {h Math.min(height[i],height[j]);v Math.max(v, h*(j-i));}}…...

matlab求解方程

【MATLAB】求解含有三角函数的方程_matlab求解三角函数方程-CSDN博客 Matlab求解方程或函数的根&#xff0c;root,fzero,solve,fsolve的区别_matlab root-CSDN博客 非线性方程(组)&#xff1a;MATLAB内置函数 solve, vpasolve, fsolve, fzero, roots [MATLAB] - GentleMin - …...

MySQL基础--视图,存储过程

介绍 视图是一种虚拟存在的表&#xff0c;视图中的数据并不在数据库中实际存在&#xff0c;行和列数据来自定义视图的查询中使用的表&#xff0c;并且是在使用视图时动态生成的。 通俗的讲&#xff0c;视图只保存了查询的 SQL 逻辑&#xff0c;不保存查询结果&#xff0c;所以我…...

学习记录第二十六天

进程运行 1&#xff0c;子进程和父进程做相同的事----创建子进程 执行任务 2&#xff0c;子进程做与父进程不同的事 ----fork exec exec族 l VS v :主要是第二个参数的传参方式不同 p :表示寻找可执行文件 是通过PATA环境变量 e : 表示可以给…...

Polars简明基础教程十一:可视化(一)

到本次讲座结束时&#xff0c;你将能够&#xff1a; 使用Polars的内部plot方法从Polars创建图表使用外部绘图库从Polars创建图表了解这些库如何支持Polars 通常&#xff0c;需要可视化库的最新版本来实现最大程度的兼容性 import polars as plimport hvplot as hv import ma…...

实战项目:贪吃蛇游戏的实现(上)

前言 Hello, 今天我们来一起完成一个实战项目&#xff1a;贪吃蛇。 相信大家都不会对这个游戏感到陌生&#xff0c;贪吃蛇游戏是久负盛名的游戏&#xff0c;他和俄罗斯方块&#xff0c;扫雷游戏等游戏位列世界经典游戏之列。这次我们旨在通过实战项目贪吃蛇的实现&#xff0c…...

基于PLC的智能饲喂系统设计:开启现代养殖自动化新篇章

基于PLC的智能饲喂系统设计 本设计包括设计报告&#xff0c;任务书&#xff0c;模拟工程仿真。本设计的制作智能饲喂是现代物流系统的重要组成部分&#xff0c;是代替人工饲喂的可行性计划&#xff0c;由自动控制与管理系统、配料系统、送料系统、自动统计系统、触摸屏监控系统…...

别再手动写RTL了!用Vivado FIR Compiler IP核5分钟搞定一个低通滤波器

5分钟极速部署&#xff1a;用Vivado FIR Compiler IP核实现专业级低通滤波器 在FPGA信号处理领域&#xff0c;滤波器设计往往需要耗费工程师大量时间在RTL编码和验证上。但今天&#xff0c;我们将颠覆这一传统工作流程——通过Vivado的FIR Compiler IP核&#xff0c;即使没有深…...

深度学习助力图像增强:多算法与PyTorch复现

深度学习图像低光照增强算法低照度增强3DLUT,DeepUPT,DeepLPF,RetinexNet,Zero-DCE,EnlightenGAN,RetinexFormer等 图像调色增强算法HDRNet,StarEnhancer,CSRNet等 水下增强算法UWGAN,UIEGAN等 pytorch架构复现&#xff0c;有代码和benchmark数据集在图像处理领域&#xff0c;针…...

BERT-base-uncased完全指南:从基础原理到实战应用

BERT-base-uncased完全指南&#xff1a;从基础原理到实战应用 【免费下载链接】bert-base-uncased 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/bert-base-uncased 一、认知铺垫&#xff1a;为什么BERT改变了NLP格局&#xff1f; 1.1 BERT的突破性意义何…...

ViGEmBus虚拟手柄驱动:Windows内核级游戏控制器模拟核心技术解析与应用指南

ViGEmBus虚拟手柄驱动&#xff1a;Windows内核级游戏控制器模拟核心技术解析与应用指南 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus ViGEmBus作为Windows…...

三相不平衡电压下H桥五电平并网逆变器并网控制探究

三相不平衡电压下级连H桥五电平并网逆变器并网控制&#xff0c;SPWM调制&#xff0c;正负序分离控制 1.采用正负序分离锁相环以及正序PI控制&#xff0c;负序PI控制 2.采用中点电位平衡控制-零序电压注入法 3.提供参考文献 提供仿真源文件&#xff0c;电流环参数设计&#xff0…...

PyTorch 2.8 + CUDA 12.4镜像实战教程:适配10核CPU+120GB内存的完整配置

PyTorch 2.8 CUDA 12.4镜像实战教程&#xff1a;适配10核CPU120GB内存的完整配置 1. 镜像概述与环境准备 1.1 核心特性介绍 这个深度优化镜像基于RTX 4090D 24GB显卡和CUDA 12.4驱动构建&#xff0c;专为高性能深度学习任务设计。主要特点包括&#xff1a; 硬件适配&#…...

新手零基础入门:借助快马AI生成你的第一个班级宠物园网页应用

作为一个刚接触编程的新手&#xff0c;想要快速上手开发一个班级宠物园网页应用&#xff0c;确实会遇到不少挑战。不过现在有了InsCode(快马)平台这样的工具&#xff0c;整个过程变得简单多了。下面我就分享一下自己从零开始构建这个项目的经验&#xff0c;希望能帮助到同样想入…...

AI原生应用:解决幻觉难题的有效途径

AI原生应用:解决幻觉难题的有效途径 关键词:AI原生应用、大模型幻觉、检索增强生成(RAG)、验证模块、智能系统架构 摘要:大语言模型(LLM)的“幻觉”(Hallucination)问题——生成与事实不符的内容,正成为AI应用落地的最大障碍。本文将从“AI原生应用”的视角出发,用通…...

5分钟玩转OpenClaw:nanobot镜像云端体验与本地调试对比

5分钟玩转OpenClaw&#xff1a;nanobot镜像云端体验与本地调试对比 1. 为什么需要对比云端与本地两种体验方式 作为一个长期折腾AI工具的开发者&#xff0c;我最近在测试OpenClaw时遇到了一个典型困境&#xff1a;是直接在本地电脑安装全套环境&#xff0c;还是先用云端沙盒快…...