C语言
文章平均质量分 55
鱼非愚
真正的高贵是优于曾经的自己
展开
-
基于TCP的客户端、服务器端socket编程
一.实验目的理解tcp传输客户端服务器端通信流程二.实验平台MAC OS三.实验内容编写TCP服务器套接字程序,程序运行时服务器等待客户的连接,一旦连接成功,则显示客户的IP地址、端口号,并向客户端发送字符串。四.实验原理使用TCP套接字编程可以实现基于TCP/IP协议的面向连接的通信,它分为服务器端和客户端两部分,其主要实现过程如下四.实验流程服务器端流程1.创建socket socket是一个结构体,被创建在内核中 sockfd=s..转载 2021-12-07 21:13:34 · 1374 阅读 · 0 评论 -
Linux lsof命令
一、lsof命令lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系转载 2022-04-25 10:08:39 · 386 阅读 · 0 评论 -
软连接文件的创建删除
/*demo(通过系统命令)*实现一个对视频文件可以操作的软连接路径*在Nginx中的HTML页面可直接访问视频文件*目录的创建,文件的链接,文件的删除*/#include <stdio.h>#include <string.h>#include <errno.h>#include <sys/stat.h> //mkdir#include <sys/types.h>#include <dirent.h> //.原创 2022-04-13 20:13:28 · 426 阅读 · 0 评论 -
基于TCP的客户端、服务器端socket编程
服务器端流程1.创建socket socket是一个结构体,被创建在内核中sockfd=socket(AF_INET,SOCK_STREAM,0); //AF_INT:ipv4, SOCK_STREAM:tcp协议2.调用bind函数 将socket和地址(包括ip、port)绑定。 需要定义一个结构体地址,以便于将port的主机字节序转化成网络字节序 struct sockaddr_in serveraddr; //地址结构体 bind函数 ...原创 2022-03-17 10:47:11 · 731 阅读 · 0 评论 -
字符密码校验
1)连续相同字符如:aaAA11bb,配置后保存不成功--连续相同字符。2)用户名的密码如:用户admin,配置密码admin123--获取用户名--和密码进行字符匹配校验3)前三位及后三位相同/顺序颠倒的数字或字母如:abc11abc、abc11cba--密码的前3位和后3位不能相同--校验包含数字,字母。字符校验特殊字符:$ #?--不包含#include <iostream>#include <string>...原创 2022-02-11 14:05:55 · 746 阅读 · 0 评论 -
c语言八大排序算法详细版
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序。快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短;1. 插入排序—直接插入排序(Straight Insertion Sort)基本思想:将一个记录插入到已原创 2021-12-02 14:15:02 · 1827 阅读 · 0 评论 -
数据结构--队列、栈(代码实现)
队列(Queue):是限定只能在表的一端进行插入和在另一端进行删除操作的线性表;栈(Stack):是限定只能在表的一端进行插入和删除操作的线性表。两种结构有以下区别:(1)操作的名称不同。队列的插入称为入队,队列的删除称为出队。栈的插入称为进栈,栈的删除称为出栈。(2)操作的限定不同。队列是在队尾入队,队头出队,即两边都可操作。而栈的进栈和出栈都是在栈顶进行的,无法对栈底直接进行操作。 (3)操作的规则不同。队列是先进先出(FIFO),即队列的修改是依先进先出的...原创 2021-11-15 10:33:55 · 135 阅读 · 0 评论 -
数据结构--链表(代码实现)
链表分类链表分为单向链表(Singly linked lis)、双向链表(Doubly linked list)、循环链表(Circular Linked list)。应用: 1).用于数据数目事先无法确定的情况; 2).用于数据数在内存中不连续存放的情况; 组成: 1). 头指针 2). 结点(节点) 2.1 数据域 2.2 指针域...原创 2021-11-23 19:39:16 · 1221 阅读 · 0 评论 -
数据结构--二叉树(代码实现)
一、概念一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。二叉树的特点:每个结点最多有两棵子树,即二叉树不存在度大于2的结点。 二叉树的子树有左右之分,其子树的次序不能颠倒。二、存储结构、二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示元素的逻辑关系。 通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址 。三、二叉树的性质若规定根节点的层原创 2021-11-16 17:15:36 · 835 阅读 · 0 评论 -
数据结构--哈希表(代码实现)
1、直接定制法哈希函数为关键字的线性函数如 H(key)=a*key+b这种构造方法比较简便,均匀,但是有很大限制,仅限于地址大小=关键字集合的情况产生hash冲突后在存储数据后面加一个指针,指向后面冲突的数据2、查找过程和造表过程一致,假设采用开放定址法处理冲突,则查找过程为:对于给定的key,计算hash地址index = H(key)如果数组arr【index】的值为空 则查找不成功如果数组arr【index】== key 则查找成功否则 使用冲突解决方法求下一个地址,直到arr.原创 2021-11-16 17:15:12 · 1470 阅读 · 0 评论 -
编译出错总结
一、类型匹配问题:1、incompatible types in assignment of ‘char*’ to ‘char [64]’可以使用strcpy();解决。2、error: assigning to an array from an initializer list//不能对数组赋值,只能对数组元素初始化或赋值。3、[Error] ‘f’ was not declared in this scopef 没有进行声明...原创 2021-10-21 13:30:35 · 8098 阅读 · 0 评论 -
判断是否UTF-8编码并实现字节统计
UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。UTF-8的编码规则很简单,只有二条:1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。/下表总结了编码规则,字母原创 2021-10-15 16:39:24 · 911 阅读 · 0 评论 -
实现使用libevent库创建服务器连接多个客户端并实现数据互发
需要的头文件包含c库、Unix系统库和envent事件库#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>/* Required by event.h. */#include <sys/time.h>#include <stdlib.h>#include <stdio.h>原创 2021-09-29 19:06:45 · 1072 阅读 · 0 评论 -
子字符串的获取与常见字符操作函数总结
先展示一段子字符串获取函数主要使用到下面介绍的strstr。#include <iostream>#include <stdio.h>#include <string.h>#include <stdlib.h>using namespace std;int getSubstrFromString(const char *buff, const char *starts, const char *ends, char *result, un.原创 2021-09-24 17:17:45 · 1247 阅读 · 0 评论 -
基于单片机的智能热水箱设计代码加演示
1 系统总需求要求热水箱的额温度控制系统能完成以下功能:具备基础的提示功能、使用液晶显示、温度上下限的设定,时间的开始及结束、手动设定温度、控温范围在0℃—99℃,精度于±1℃以内、具备自动控制加热的功能。根据以上设计的方案,需要实现下面几点设计的需求:在整体上采用了AT89C52单片机芯片,其他主要模块如DS18b20测温传感器以及LCD1602液晶显示,组成实现温度的实时测量读取并显示。由于是对水温的控制测量的范围就不用再麻烦到人为的去设置而是在程序中进行写死,到时候只需要人为按键设置指定的..原创 2021-09-06 11:10:31 · 1175 阅读 · 0 评论