TCP并发服务器多线程
#include<stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h> /* superset of previous */
#include<stdlib.h>
#include <strings.h>
#include<unistd.h>#include <string.h>#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
//./client 192.168.182.144 5001#define SERV_PORT 5001
#define SERV_IP_ADDR "192.168.157.34"
#define BUFSIZE 1024
#define QUIT_STR "QUIT"int main(int argc,char **argv)
{int fd = -1;if(argc!=3){exit(1);}int port = -1;port = atoi(argv[2]);fd = socket(AF_INET,SOCK_STREAM,0);if(fd<0){perror("socket");exit(1);}struct sockaddr_in sin;bzero(&sin,sizeof(sin));sin.sin_family = AF_INET;sin.sin_port = htons(port);sin.sin_addr.s_addr = inet_addr(argv[1]);if(connect(fd,(struct sockaddr*)&sin,sizeof(sin))<0){perror("connect");exit(1);}char buf[BUFSIZE];while(1){bzero(buf,BUFSIZE);if(fgets(buf,BUFSIZE-1,stdin)==NULL){continue;}write(fd,buf,strlen(buf));if(!strncasecmp(buf,QUIT_STR,strlen(QUIT_STR))){break;}}return 0;} service
#include<stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h> /* superset of previous */
#include<stdlib.h>
#include <strings.h>
#include<unistd.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
#include<pthread.h>
#define SERV_PORT 5001
#define SERV_IP_ADDR "192.168.157.34"
#define BACKLOG 5
#define BUFSIZE 1024
#define QUIT_STR "QUIT"
void* client_data_handle(void* arg);
int main(int argc,char *argv[])
{//socketint fd = -1;pthread_t tid;fd = socket(AF_INET,SOCK_STREAM,0);if(fd < 0){perror("socket");exit(1);}/*struct sockaddr_in {sa_family_t sin_family; address family: AF_INET in_port_t sin_port; port in network byte order struct in_addr sin_addr; internet address };Internet address. struct in_addr {uint32_t s_addr; address in network byte order }; */struct sockaddr_in sin;bzero(&sin,sizeof(sin));sin.sin_family = AF_INET;sin.sin_port = htons(SERV_PORT);sin.sin_addr.s_addr = INADDR_ANY;//bingif(bind(fd,(struct sockaddr *)&sin,sizeof(sin))<0){perror("bind");exit(1);}//listenif(listen(fd,BACKLOG)<0){perror("listen");exit(1);}int newfd = -1;char ipv4_addr[16];struct sockaddr_in clin;socklen_t sockaddr_len = sizeof(clin);while(1){newfd = accept(fd,(struct sockaddr *)&clin,&sockaddr_len);if(newfd<0){perror("accept");exit(1);}if(!inet_ntop(AF_INET,(void *)&clin.sin_addr,ipv4_addr,sizeof(clin))){perror("inet_ntop");exit(1);}printf("client :(%s,%d) is connect!\n",ipv4_addr,ntohs(clin.sin_port));pthread_create(&tid,NULL,client_data_handle,(void *)&newfd);}close(fd);//readchar buf[BUFSIZE];int ret = -1;while(1){do{bzero(buf,BUFSIZE);ret = read(newfd,buf,BUFSIZE-1);}while(ret<1);if(ret<0){perror("read");exit(1);}if(!ret){break;}printf("receive data :%s \n",buf);if(!strncasecmp(buf,QUIT_STR,strlen(QUIT_STR))){printf("Client is exiting!\n");break;}}
}void* client_data_handle(void* arg)
{int newfd = *(int *)arg;char buf[BUFSIZE];int ret = -1;printf("handle thread :newfd= %d\n",newfd);while(1){do{bzero(buf,BUFSIZE);ret = read(newfd,buf,BUFSIZE-1);}while(ret<1);if(ret<0){perror("read");exit(1);}if(!ret){break;}printf("receive data :%s \n",buf);if(!strncasecmp(buf,QUIT_STR,strlen(QUIT_STR))){printf("Client is exiting!\n");break;}}close(newfd);return NULL;}
结果

相关文章:
TCP并发服务器多线程
1.创建线程‐‐pthread_create int pthread_create( pthread_t *thread, // 线程 ID 无符号长整型 const pthread_attr_t *attr, // 线程属性, NULL void *(*start_routine)(void *), // 线程处理函数 void *arg); // 线程处理函数 参数: pthrea…...
技术速递|C# 13:探索最新的预览功能
作者:Kathleen Dollard 排版:Alan Wang C# 13 已初具雏形,其新特性侧重于灵活性、性能以及使您最喜欢的功能在日常中变得更容易使用。我们以公开的方式构建 C#,在今年的 Microsoft Build 大会上,我们会让您一睹 C# 13 …...
Python设计模式:巧用元类创建单例模式!
✨ 内容: 今天我们来探讨一个高级且实用的Python概念——元类(Metaclasses)。元类是创建类的类,它们可以用来控制类的行为。通过本次练习,我们将学习如何使用元类来实现单例模式,确保某个类在整个程序中只…...
构建自主可控的工业操作系统,筑牢我国工业安全堡垒
构建自主可控的工业操作系统,筑牢我国工业安全堡垒,鸿道(Intewell)操作系统为国家工业发展保驾护航。 7月19日,全球多地安装微软操作系统的电脑设备出现大规模宕机,导致“蓝屏”现象,严重影响了航空、铁路、医疗、金…...
WPF串口通讯程序
目录 一 设计原型 二 后台源码 一 设计原型 二 后台源码 using HardwareCommunications; using System.IO.Ports; using System.Windows;namespace PortTest {/// <summary>/// Interaction logic for MainWindow.xaml/// </summary>public partial class MainW…...
汽车技术智能化程度不断提升,线束可靠性如何设计?
随着汽车技术的高速发展,汽车自动化、智能化程度的逐步提高,人们对汽车的安全性、舒适性、娱乐性等要求也不断提高,加上汽车节能减排法规的不断严峻,整车电气设备不断增加,作为连接汽车各种电器设备“神经网络”的整车…...
实现Nginx的反向代理和负载均衡
一、反向代理和负载均衡简介 1.1、反向代理 反向代理(reverse proxy)指:以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端。此时代理服务器对外就表现为一个反向代理服务器。 反向代…...
【算法】子集
难度:中等 题目: 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的 子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:nums [1,…...
Web前端:HTML篇(一)
HTML简介: 超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言。 您可以使用 HTML 来建立自己的 WEB 站点,HTML 运行在浏览器上,由浏览器…...
ActiViz中的选择点vtkWorldPointPicker
文章目录 1. vtkWorldPointPicker简介2. 类的位置和继承关系3. 选择机制4. 返回的信息5. 选择的条件和参数6. 与屏幕空间选择器的比较7. 性能特征8. 应用场景9. 与其他vtk选择器的集成10. 完整示例总结1. vtkWorldPointPicker简介 vtkWorldPointPicker是Visualization Toolkit…...
如何开启或者关闭 Windows 安全登录?
什么是安全登录 什么是 Windows 安全登录呢?安全登录是 Windows 附加的一个组件,它可以在用户需要登录的之前先将登录界面隐藏,只有当用户按下 CtrlAltDelete 之后才出现登录屏幕,这样可以防止那些模拟登录界面的程序获取密码信息…...
【目标检测】Anaconda+PyTorch配置
前言 本文主要介绍在windows系统上的Anaconda、PyTorch关键步骤安装,为使用yolo所需的环境配置完善。同时也算是记录下我的配置流程,为以后用到的时候能笔记查阅。 Anaconda 软件安装 Anaconda官网:https://www.anaconda.com/ 另外&#…...
什么是离线语音识别芯片?与在线语音识别的区别
离线语音识别芯片是一种不需要联网和其他外部设备支持,上电即可使用的语音识别系统。它的应用场合相对单一,主要适用于智能家电、语音遥控器、智能玩具等,以及车载声控和一部分智能家居。离线语音识别芯片的特点包括小词汇量、…...
使用Diffusion Models进行街景视频生成
Diffusion Models专栏文章汇总:入门与实战 前言:街景图生成相当有挑战性,目前的文本到视频的方法仅限于生成有限范围的场景的短视频,文本到3D的方法可以生成单独的对象但不是整个城市。除此之外街景图对一致性的要求相当高&#x…...
UFO:革新Windows操作系统交互的UI聚焦代理
人工智能咨询培训老师叶梓 转载标明出处 人机交互的便捷性和效率直接影响着我们的工作和生活质量。尽管现代操作系统如Windows提供了丰富的图形用户界面(GUI),使得用户能够通过视觉和简单的点击操作来控制计算机,但随着应用程序功…...
scp免密复制文件
实现在服务器A和服务器B之间使用scp命令免密互相传输文件 1. 在服务器A中免密复制到服务器B 1.1 生成服务器A的公钥私钥 #在服务器A中执行 ssh-keygen -t rsa -P ""命令执行完毕会在服务器A的 ~/.ssh 目录下生成两个文件:id_rsa 和 id_rsa.pub 1.2 拷…...
Maven 的模块化开发示例
Maven 的模块化开发是一种非常有效的软件开发方式,它允许你将一个大型的项目分割成多个更小、更易于管理的模块(modules)。每个模块都可以独立地构建、测试和运行,这不仅提高了开发效率,也便于团队协作和项目的维护。以…...
通过QT进行服务器和客户端之间的网络通信
客户端 client.pro #------------------------------------------------- # # Project created by QtCreator 2024-07-02T14:11:20 # #-------------------------------------------------QT core gui network #网络通信greaterThan(QT_MAJOR_VERSION, 4): QT widg…...
【STM32 HAL库】DMA+串口
DMA 直接存储器访问 DMA传输,将数据从一个地址空间复制到另一个地址空间。-----“数据搬运工”。 DMA传输无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场,它是通过硬件为RAM和IO设备开辟一条直接传输数据的通道,…...
C#类型基础Part2-对象判等
C#类型基础Part2-对象判等 参考资料引用类型判等简单值类型判等复杂值类型判等 参考资料 《.NET之美-.NET关键技术深入解析》 引用类型判等 先定义两个类型,它们代表直线上的一个点,一个是引用类型class,一个是值类型struct public class…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
