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

Linux网络协议.之 tcp,udp,socket网络编程(三).之多进程实现并发demon

一、fork创建进程,来实现多并发
这只是个demon,并不能用于实际项目,多进程,消耗太多资源。没有人这么玩

1、服务端代码:

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>int main(int argc,char **argv)
{int s_fd;int c_fd;int n_read;char readBuf[128];char msg[128] = {0};struct sockaddr_in s_addr;struct sockaddr_in c_addr;if(argc != 3){printf("param is not good\n");exit(-1);}memset(&s_addr,0,sizeof(struct sockaddr_in));memset(&c_addr,0,sizeof(struct sockaddr_in));//1.sockets_fd = socket(AF_INET,SOCK_STREAM,0);if(s_fd == -1){perror("socket");exit(-1);}s_addr.sin_family = AF_INET;s_addr.sin_port = htons(atoi(argv[2]));inet_aton(argv[1],&s_addr.sin_addr);//2.bindbind(s_fd,(struct sockaddr *)&s_addr,sizeof(struct sockaddr_in));//3.listen listen(s_fd,10);//4.acceptint clen = sizeof(struct sockaddr_in);while(1){c_fd = accept(s_fd,(struct sockaddr *)&c_addr,&clen);//父进程负责acceptif(c_fd == -1){perror("accept");}printf("get connect:%s\n",inet_ntoa(c_addr.sin_addr));if(fork() == 0)//创建一个子进程,来实现读写功能,父进程负责accept{if(fork() == 0)//创建一个子进程的子进程,来实现写功能{while(1){memset(msg,0,sizeof(msg));printf("input:");fgets(msg,sizeof(msg),stdin);write(c_fd,msg,strlen(msg));}}//5.readwhile(1)//子进程父进程,来实现读功能{memset(readBuf,0,sizeof(readBuf));n_read = read(c_fd,readBuf,128);if(n_read == -1){perror("read");}else{printf("get message:%d,%s\n",n_read,readBuf);}}break;}}return 0;
}

2、客户端代码:

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>int main(int argc,char **argv)
{int c_fd;int n_read;char readBuf[128];//      char *msg = "msg form client";char msg[128] = {0};struct sockaddr_in c_addr;memset(&c_addr,0,sizeof(struct sockaddr_in));if(argc != 3){printf("parm is not good\n");exit(-1);}//1.socketc_fd = socket(AF_INET,SOCK_STREAM,0);if(c_fd == -1){perror("socket");exit(-1);}c_addr.sin_family = AF_INET;c_addr.sin_port = htons(atoi(argv[2]));inet_aton(argv[1],&c_addr.sin_addr);//2.connectif(connect(c_fd,(struct sockaddr *)&c_addr,sizeof(struct sockaddr)) == -1){perror("connect");exit(-1);}if(fork() == 0)//创建一个子进程,来实现写功能{while(1){memset(msg,0,sizeof(msg));printf("input:");fgets(msg,sizeof(msg),stdin);write(c_fd,msg,strlen(msg));}}while(1)//父进程进程,来实现读功能{memset(readBuf,0,sizeof(readBuf));n_read = read(c_fd,readBuf,128);if(n_read == -1){perror("read");}else{printf("get message form server:%d,%s\n",n_read,readBuf);}}return 0;
}       

相关文章:

Linux网络协议.之 tcp,udp,socket网络编程(三).之多进程实现并发demon

一、fork创建进程&#xff0c;来实现多并发 这只是个demon&#xff0c;并不能用于实际项目&#xff0c;多进程&#xff0c;消耗太多资源。没有人这么玩 1、服务端代码&#xff1a; #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #in…...

Java线程(练习题)

Exercise 创建三个线程&#xff1a;一个线程打印 100个A,一个线程打印 100 个 B &#xff0c;一个线程打印 100个C 输出效果&#xff1a;ABC ABC ABC…交替打印 package com.kane.exercise01;public class PrintABC implements Runnable {private static final Object lock …...

MySQL:初识数据库初识SQL建库

目录 1、初识数据库 1.1 什么是数据库 1.2 什么是MySQL 2、数据库 2.1 数据库服务&数据库 2.2 C/S架构 3、 初识SQL 3.1 什么是SQL 3.2 SQL分类 4、使用SQL 4.1 查看所有数据库 4.1.2 语句解析 4.2 创建数据库 4.2.1 if not exists校验 4.2.2 手动明确字符集…...

关于Redis的集群面试题

问题一&#xff1a;Redis的多数据库机制&#xff0c;了解多少&#xff1f; Redis支持多个数据库&#xff0c;并且每个数据库是隔离的不能共享&#xff0c;单机下的redis可以支持16个数据库&#xff08;db0~db15&#xff09;;若在Redis Cluster集群架构下&#xff0c;则只有一个…...

带头双向循环链表(一)

今天我们来学习带头双向链表 带头双向循环链表的解释 带头双向链表顾名思义就是&#xff1a; 1、带了一个“头”在数据结构中的意思就是加了一个"哨兵位"。 2、这个链表是双向循环的链表即可以通过任意的节点访问它的上一个和下一个的节点也能通过链表的头直接访…...

深入理解Win32K.sys的工作原理

https://download.csdn.net/download/sitelist/89621815 Windows Resource Kits 2003.rar工具下载&#xff0c;因为有windows server 2003源代码&#xff0c;并可以编译成iso&#xff0c;所以对于研究windows系统很有帮助&#xff0c;上吗是2003的研究工具&#xff0c;不知道源…...

力扣面试经典算法150题:删除有序数组中的重复项

删除有序数组中的重复项 今天的题目是力扣面试经典150题中的数组的简单题: 删除有序数组中的重复项 题目链接&#xff1a;https://leetcode.cn/problems/remove-duplicates-from-sorted-array/description/?envTypestudy-plan-v2&envIdtop-interview-150 题目描述 给定一…...

文本加密工具类-支持MD5、SHA1、SHA256、SHA224、SHA512、SHA384、SHA3、RIPMD160算法

文本加密工具类 1.算法简介1.1 MD51.2 SHA-11.3 SHA-2&#xff08;推荐使用&#xff09;1.4 SHA-3&#xff08;推荐使用&#xff09;1.5 RIPEMD-160 2.工具类案例2.1POM导入2.2代码编写2.3 输出示例 1.算法简介 1.1 MD5 MD5 (Message-Digest Algorithm 5) 描述&#xff1a;M…...

LVS集群中的负载均衡技术

目录 一、LVS技术原理 二、NAT模式原理及部署方法 1、工作原理 2、部署方法 1、网络配置 2、软件安装与启用 3、测试 三、DR模式原理及部署方法 1、工作原理 2、部署方法 1、网络配置 2、解决vip响应问题 3、测试 四、ipvsadm命令及参数 1、管理集群服务&#x…...

Java网络编程——HTTP协议原理

协议 我们在网上冲浪时&#xff0c;会在浏览器地址栏输入一个网址&#xff0c;然后就能打开网页了。比如&#xff0c;输入 https://www.douban.com/就可以访问到豆瓣的主页&#xff1a; 那么大家是否好奇&#xff1a;https 是什么意思&#xff0c;作用又是什么呢&#xff1f;…...

java之多线程篇

一、基本概念 1.什么是线程&#xff1f; 线程就是&#xff0c;操作系统能够进行运算调度的最小单位。它被包含在进程之中&#xff0c;是进程中的实际运作单位。简单理解就是&#xff1a;应用软件中互相独立&#xff0c;可以同时运行的功能 2.什么是多线程&#xff1f; 有了多线…...

【深度学习】TTS,CosyVoice,训练脚本解析

https://github.com/FunAudioLLM/CosyVoice/blob/main/examples/libritts/cosyvoice/run.sh Bash 脚本是一个语音合成(TTS)训练和推理的完整流水线。让我们逐步解析这个脚本的各个部分。 初始化部分 #!/bin/bash # Copyright 2024 Alibaba Inc. All Rights Reserved. . ./…...

《Unity3D网络游戏实战》学习与实践

纸上得来终觉浅&#xff0c;绝知此事要躬行~ Echo 网络上的两个程序通过一个双向的通信连接实现数据交换&#xff0c;这个连接的一端称为一个Socket “端口”是英文port的意译&#xff0c;是设备与外界通信交流的出口。每台计算机可以分配0到65535共65536个端口 每一条Sock…...

Machine_Matrix打靶渗透【附代码】(权限提升)

靶机下载地址&#xff1a; https%3A%2F%2Fdownload.vulnhub.com%2Fmatrix%2FMachine_Matrix.zip 1. 主机发现端口扫描目录扫描敏感信息获取 1.1. 主机发现 nmap -sn 192.168.7.0/24|grep -B 2 08:00:27:D9:36:81 1.2. 端口扫描 nmap -p- 192.168.7.155 1.3. 目录扫描 dir…...

代码随想录算法训练营Day22 | Leetcode 77 组合 Leetcode 216 组合总和Ⅲ Leetcode17 电话号码的字母组合

前言 回溯算法中递归的逻辑不重要&#xff0c;只要掌握回溯的模板以及将问题转化为树形图&#xff0c;整个问题就很好解决了&#xff0c;比二叉树简单。 Leetcode 77 组合 题目链接&#xff1a;77. 组合 - 力扣&#xff08;LeetCode&#xff09; 代码随想录题解&#xff1a;…...

【微信小程序实战教程】之微信小程序中的 JavaScript

微信小程序中的 JavaScript 微信小程序的业务逻辑都是通过JavaScript语言来实现的&#xff0c;本章我们将详细的讲解JavaScript的基本概念&#xff0c;以及在小程序中如何使用JavaScript语言。JavaScript是一种轻量的、解释型的、面向对象的头等函数语言&#xff0c;是一种动态…...

K-近邻算法(一)

一、 K- 近邻算法 (KNN) 概念 1.1 K- 近邻算法 (KNN) 概念 K Nearest Neighbor 算法⼜叫 KNN 算法&#xff0c;这个算法是机器学习⾥⾯⼀个⽐较经典的算法&#xff0c; 总体来说 KNN 算法是相对⽐ 较容易理解的算法 定义 : 如果⼀个样本在特征空间中的k 个最相似 ( 即特征空间…...

从零开始之AI视频制作篇

从零开始之AI视频制作篇 文章目录 从零开始之AI视频制作篇前言一、工具列表二、成片展示三、制作流程1、获取图片素材2、图片生成视频2.1 Runway操作流程 3、文本生成语音3.1 Fish Audio操作流程 4、视频剪辑4.1 音频素材4.2 字幕生成 四、Runway提示词参考&#xff1a;参考 前…...

Java之TCP编程综合案例

1.反转案例 搭建一个TCP客户端&#xff0c;从键盘录入整行数据&#xff08;遇到quit结束录入&#xff09;然后发送给服务器&#xff0c;再接收服务器返回的数据并输出。 package com.briup.chap12;public class Test064_ReversalClient {public static void main(String[] ar…...

【数据分析---Pandas实战指南:精通数据查询、增删改操作与高效索引和列名操作管理】

前言&#xff1a; &#x1f49e;&#x1f49e;大家好&#xff0c;我是书生♡&#xff0c;本阶段和大家一起分享和探索数据分析&#xff0c;本篇文章主要讲述了&#xff1a;数据查询操作&#xff0c;数据增删改操作&#xff0c;索引和列名操作等等。欢迎大家一起探索讨论&#x…...

中文文献管理效率提升指南:茉莉花插件的全方位应用

中文文献管理效率提升指南&#xff1a;茉莉花插件的全方位应用 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件&#xff0c;用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 在学术研究与文献管…...

家庭能量管理系统(HEMS)代码功能说明文章

家庭能源管理matlab 采用matlab编制家庭能源管理程序&#xff0c;包括各种家用电器的调度运行策略&#xff0c;程序通用性好。一、系统概述 家庭能量管理系统&#xff08;Home Energy Management System, HEMS&#xff09;是智能家居领域的核心应用之一&#xff0c;旨在通过智能…...

终极Qwen-Agent DevOps集成指南:AI助手的持续集成与部署全流程解析

终极Qwen-Agent DevOps集成指南&#xff1a;AI助手的持续集成与部署全流程解析 【免费下载链接】Qwen-Agent Agent framework and applications built upon Qwen>3.0, featuring Function Calling, MCP, Code Interpreter, RAG, Chrome extension, etc. 项目地址: https:/…...

OpenClaw技能开发入门:为Qwen2.5-VL-7B扩展截图分析功能

OpenClaw技能开发入门&#xff1a;为Qwen2.5-VL-7B扩展截图分析功能 1. 为什么需要截图分析技能 上周我在整理项目文档时&#xff0c;突然意识到一个痛点&#xff1a;每次截图后都需要手动添加文字说明&#xff0c;这个过程既耗时又容易出错。作为一个长期关注自动化工具的技…...

TwinCAT3梯形图编程实战:从基础功能到高级应用

1. TwinCAT3梯形图编程入门指南 第一次打开TwinCAT3开发环境时&#xff0c;很多工程师都会被它强大的功能震撼到。作为工业自动化领域的"瑞士军刀"&#xff0c;TwinCAT3的梯形图编程功能尤其适合从传统PLC转型过来的开发者。我刚开始接触时也走过不少弯路&#xff0c…...

LeetCode单词拆分:动态规划详解,Apache介绍和安装。

单词拆分问题概述 单词拆分&#xff08;Word Break&#xff09;是LeetCode上经典的动态规划问题&#xff0c;题目要求判断给定字符串是否可以被拆分为字典中的单词。例如&#xff0c;给定字符串"leetcode"和字典["leet", "code"]&#xff0c;返回…...

Arduino轻量级CLI库cmdArduino原理与实战

1. 项目概述cmdArduino 是一个面向 Arduino 平台的轻量级命令行接口&#xff08;CLI&#xff09;库&#xff0c;由 Freaklabs 团队的 Akiba 与 Jacinta 开发。其核心定位并非构建功能完备的嵌入式 Shell&#xff08;如 BusyBox 或 MicroPython REPL&#xff09;&#xff0c;而是…...

python pyinstaller

# 关于 PyInstaller&#xff0c;一位 Python 老手的随想 最近在整理一些旧项目&#xff0c;又用到了 PyInstaller 这个工具。说起来&#xff0c;它算是 Python 开发中一个既熟悉又容易被忽视的存在。很多开发者第一次接触它&#xff0c;往往是为了把写好的脚本发给不会装 Pytho…...

云原生应用的可观测性最佳实践

云原生应用的可观测性最佳实践 &#x1f525; 硬核开场 各位技术老铁&#xff0c;今天咱们聊聊云原生应用的可观测性最佳实践。别跟我扯那些理论&#xff0c;直接上干货&#xff01;在云原生时代&#xff0c;可观测性是系统可靠性的关键&#xff0c;它能帮助我们全面了解系统…...

边缘检测数据集BSDS500的‘坑’与优化:多标注者标签融合与阈值选择的经验谈

边缘检测数据集BSDS500的‘坑’与优化&#xff1a;多标注者标签融合与阈值选择的经验谈 第一次接触BSDS500数据集时&#xff0c;我以为这不过又是一个标准的边缘检测基准——直到我的RCF网络在验证集上输出了支离破碎的边缘图。那个深夜调试参数的场景至今记忆犹新&#xff1a;…...