- 博客(28)
- 收藏
- 关注
原创 TCP实现FTP功能
文件传输协议(File Transfer Protocol,FTP)是一种在网络中进行文件传输的广泛使用的标准协议。作为网络通信中的基础工具,FTP允许用户通过客户端软件与服务器进行交互,实现文件的上传、下载和其他文件操作。FTP工作在OSI模型的应用层,通常使用TCP作为其传输协议,确保数据传输的可靠性和顺序性。
2024-09-12 21:43:13
718
原创 网络编程(UDP)
UDP:全双工通信、面向无连接、不可靠UDP(User Datagram Protocol)用户数据报协议,是不可靠的无连接的协议。在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输。适用场景发送小尺寸数据(如对DNS服务器进行IP地址查询时),适合于广播/组播式通信中。MSN/QQ/Skype等即时通讯软件的点对点文本通讯以及音视频通讯通常采用UDP协议
2024-09-09 22:13:49
1251
原创 网络编程(TCP)
TCP编程TCP:全双工通信、面向连接、可靠TCP(即传输控制协议):是一种面向连接的传输层协议,它能提供高可靠性通信(即数据无误、数据无丢失、数据无失序、数据无重复到达的通信)。高可靠原因:三次握手、四次挥手序列号和应答机制超时,错误重传机制拥塞控制、流量控制(滑动窗口)适用场景适合于对传输质量要求较高的通信在需要可靠数据传输的场合,通常使用TCP协议MSN/QQ等即时通讯软件的用户登录账户管理相关的功能通常采用TCP协议流程函数接口socketbind。
2024-09-09 21:50:28
1682
原创 进程间通信方式(共享内存、信号灯集、消息队列)
共享内存是一种最为高效的进程间通信方式,进程可以直接读写内存,而不需要任何数据的拷贝。信号灯(semaphore),也叫信号量,信号灯集是一个信号灯的集合。它是不同进程间或一个给定进程内部不同线程间同步的机制。消息队列就是一个消息的列表。用户可以在消息队列中添加消息、读取消息等,消息队列可以按照类型(自己设一个值作为类型)来发送/接收消息。
2024-09-04 22:00:46
972
原创 进程间通信方式(信号篇)
1)信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式2)信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用它来通知用户空间进程发生了哪些系统事件3)如果该进程当前并未处于执行态,则该信号就由内核保存起来,直到该进程恢复执行再传递给它;如果一个信号被进程设置为阻塞,则该信号的传递被延迟,直到其阻塞被取消时才被传递给进程
2024-09-04 21:31:17
969
原创 IO进程(线程篇)
线程是一个轻量级的进程,为了提高系统的性能引入线程线程和进程是参与统一的调度在同一个进程中可以创建的多个线程,共享进程资源。共享的资源:可执行的指令、静态数据、进程中打开的文件描述符、信号处理函数、当前工作目录、用户ID、用户组ID。私有的资源:线程ID (TID)、PC(程序计数器)和相关寄存器、堆栈(局部变量, 返回地址)、错误号 (errno)、信号掩码和优先级、执行状态和属性通过线程实现数据的交互。
2024-09-03 17:03:50
1333
原创 库(Library)
在Linux操作系统中,库(Library)是一段编译好的、可重用的代码,它能够被其他程序或应用程序在运行时调用。库可以提高代码的模块化,使得开发者可以共享和重用代码,从而提高开发效率,减少冗余。库:把一些常用的函数的目标文件打包在一起,提供相应的函数接口,便于程序员使用。本质上来说库是一种可执行代码的二进制形式文件。由于windows和linux的本质不同,因此库的二进制是不兼容的。(Linux中的C运行库是glibc, 由GUN发布)在Linux的平台下,静态库文件的后缀是.a,动态库的后缀是.so。
2024-09-03 16:27:50
1103
原创 获取文件属性
S_IFMT是一个掩码,它的值是0170000(注意这里用的是八进制前缀为0,二进制0b001111000000000000), 可以用来把st_mode位与上掩码过滤提取出表示的文件类型的那四位(15bit~12bit位),也就是这四位原样获取其他位清零。这四位可以表示0b0000~0b1111(八进制表示:001~014)七个值,每个值分别对应不同的文件类型:套接字文件、符号链接文件、普通文件、块设备、目录、字符设备、管道。
2024-09-02 22:15:22
1012
原创 IO进程(文件IO)
文件IO又称系统IO,是系统调用,是操作系统提供的接口函数,posix中定义的一组用于输入输出的函数1、没有缓冲机制,每次都会引起系统调用2、围绕文件描述符进行操作,非负整数(>=0),依次分配3、文件IO默认打开三个文件描述符,分别为0(标准输入)、1(标准输出)、2(标准错误)4、操作除了目录d以外任意类型的文件b c - l s p5、可移植性相对较差
2024-09-02 21:59:57
1246
原创 Linux高级
1、函数名( )命令表2、function 函数名( )命令表系统预先定义好的一些变量,可能有默认值可能没有RM 文件删除程序的名称,默认值为 rm -fCC C编译器的名称,默认值是ccCPP C预编译的名称,默认值:$(CC) -ECFLAGS C编译器的选项,无默认值OBJS 生成的二进制文件或者目标文件,自己定义的# 第二版本CC=gccCFLAGS=-c -g -Wall #-c编译 -g调试 -Wall显示警告clean:#define 宏名#ifdef 宏名。
2024-09-01 16:18:20
2870
原创 C语言基础(结构体 共用体 枚举)
结构体是用户自定义的数据类型,在结构体中可以包含若干个不同类型数据的成员变量(也可以相同), 使这些数据项组合起来反映某一个信息。共用体就是不同类型的成员变量共用同一块地址空间。枚举是用户自定义的数据类型,一般用于声明一组常数。
2024-09-01 14:32:24
1217
原创 C语言基础(指针篇)
指针是什么? 指针是一个变量,其值为另一个变量的地址。简单来说,指针指向内存中的某个位置。在C语言中,指针主要用于访问和操作内存中的数据。
2024-08-31 19:58:56
1283
原创 C语言基础(数组篇)
概念:具有一定顺序的若干变量的集合特点:数据类型相同,元素的数据类型要和数组的数据类型一致内存连续,数组名[下标]--->变量名 数组内的元素--->变量的值
2024-08-30 23:31:31
1337
原创 数字炸弹游戏
数字炸弹游戏规则:在一个数字范围内,有一个数字作为炸弹,谁猜中这个炸弹就被惩罚。比如范围是1~100,炸弹是60,然后猜了一个数字是30,30不是炸弹,那么现在猜数字的范围就缩小到31~100,又猜了一个数字80,80也不是炸弹,那么现在又缩小范围到31~79,直到有人猜中这个炸弹,然后就受到惩罚。
2024-08-30 23:13:02
4086
原创 C语言基础(语句篇)
C语言的语句结构相对简单,以下是对C语言中常见语句结构的简述:表达式语句:任何表达式后跟一个分号;都可以构成一个表达式语句。通常用于赋值、函数调用等。条件语句:if语句:根据条件执行或跳过代码块。选择语句:switch语句:根据表达式的值选择多个代码块中的一个执行。循环语句:while语句:在条件为真时重复执行代码块。for语句:用于计数循环,可以初始化变量、设置循环条件和更新变量。跳转语句:break语句:立即退出最近的switch或循环语句。continue语句:跳过当前循环的剩余部分,直接进入。
2024-08-30 11:49:38
1679
原创 C语言基础
C语言是一种广泛使用的编程语言,以其高效和灵活著称。C语言的基础包括以下几个方面:数据类型:C语言提供了基本的数据类型,如整型(int)、字符型(char)、浮点型(float和double)等。变量和常量:变量用于存储数据,常量则是不可更改的值。C语言中的变量必须先声明后使用。运算符:C语言有一套丰富的运算符,包括算术运算符、关系运算符、逻辑运算符等。
2024-08-29 23:01:37
884
原创 数据结构栈(C语言版)
栈(Stack)是一种抽象数据类型(ADT),它体现了后进先出(Last In First Out, LIFO)的操作原则。
2024-08-28 22:36:11
717
原创 数据结构链表(C语言版)
链表是一种常见的基础数据结构,它由一系列节点(Node)组成,每个节点包含数据域和指向列表中下一个节点的指针(在双向链表中还会有指向前一个节点的指针)。链表的一个优点是它允许有效地在序列中插入和删除元素。
2024-08-27 22:38:03
624
原创 数据结构顺序表(C语言版)
顺序表是由一组元素组成的线性集合,这些元素按照一定的顺序排列,每个元素都有一个确定的位置。在顺序表中,元素之间的关系是一对一的关系,即除了第一个和最后一个元素外,每个元素都有唯一的前驱和后继。这意味着所有元素都存储在连续的内存地址中。数组的索引或下标用于访问顺序表中的元素。
2024-08-16 23:27:45
233
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人