
Linux服务器
文章平均质量分 79
Linux
weifc-wei
遇到问题,解决问题。咯卡咯伽!!!
展开
-
Protobuf 的简单使用例子
文章目录应用层协议设计protobuf 序列化protobuf的原理定义message编译message文件应用protobufMessage 基本用法Message 嵌套使用具体操作点击我, 到底部应用层协议设计通信双方交换数据的格式与顺序通信双方应该采取的动作用户登陆模块 短信获取获取短信请求 mobile_request字段名类型属性字段描述mobilestringrequired手机号码, 必须为大陆手机取 11 位数字获取短信响应 m翻译 2021-03-09 22:12:43 · 2534 阅读 · 1 评论 -
分包和粘包
文章目录分包和粘包TCP分包TCP 粘包分包和粘包解决方案:点击我, 到底部分包和粘包TCP分包场景:发送方发送字符串”helloworld”,接收方却分别接收到了两个数据包:字符串”hello”和”world” (举个栗子, 实际并不是这么短的字节长度)发送端发送了数量较多的数据,接收端读取数据时候数据分批到达,造成一次发送多次读取;造成分包的原因:TCP是以段(Segment)为单位发送数据的,建立TCP链接后,有一个最大消息长度(MSS).如果应用层数据包超过MSS,就会把应用层数据翻译 2021-02-25 11:02:17 · 416 阅读 · 0 评论 -
第六卷 _网络编程_ 我的笔记
文章目录网络编程OSI七层协议模型 (open system interconnection)TCP/IP四层协议模型协议封装TCP 协议头部三次握手滑动窗口四次挥手UDP通信点击我, 到底部网络编程TCP/IP 四层协议OSI七层协议模型 (open system interconnection)应用层————为应用数据提供服务表示层————数据格式转化,数据加密会话层————建立、维护和管理会话传输层————建立、维护和管理端到端的链接,控制数据传输的方式网络层————数翻译 2021-02-08 15:04:57 · 141 阅读 · 0 评论 -
gdb 调试 与 coredump_我的笔记_
文章目录gdb 调试 与 coredump启动 gdbbt 查看堆栈情况退出 gdb点击我, 到底部gdb 调试 与 coredumpgdb 是 GNU 发布的一个强大的程序调解工具, 也是Linux 程序员不可或缺的一大利器. 本章我们将给出 gdb 常用的命令的操作说明.启动 gdb使用gdb的前提gcc -g hello.c -o hello启动 gdb 调试:gdb hello然后就可以进入命令行操作,和Shell一样,gdb 支持命令补全。输入几个字母,按Tab键,gd原创 2021-01-11 19:26:06 · 830 阅读 · 3 评论 -
对于我而言 | vim 的常用操作
vim 的常用操作vim 的常用操作Value查找关键字“ / ” + “关键字” 回车 就可以查找了复制粘贴输入字符v(小写)h、i、j、k键移动光标 y复制 p 粘贴撤销u 撤销上一步的操作打开多个文件一、如果在终端还没有打开vim1、vim横向分屏打开多个文件vim -o 文件1 文件22、vim纵向分屏打开多个文件vim -O 文件1 文件2二、如果在终端已经打开vim1、横向分屏打开另一个文件:vs 文件2、纵向分屏原创 2020-10-04 16:45:06 · 111 阅读 · 0 评论 -
【协程第一话】协程到底是怎样的存在?
起语:版权声明:视频链接:https://www.bilibili.com/video/BV1b5411b7SD协程为何物?结语:个人感觉,学到了, 不错。分享一下链接时间:2020-10-03转载 2020-10-03 18:00:32 · 104 阅读 · 0 评论 -
【协程第二话】协程和IO多路复用更配
起语:版权声明:视频链接:https://www.bilibili.com/video/BV1a5411b7aZ具体回答内容:想读时缓冲区没数据,想写时缓冲区没空间,遇到这样的socket,该如何是好?IO多路复用和业务逻辑耦合在一起也是麻烦!协程和IO多路复用怎么合作?结语:个人感觉,学到了, 不错。分享一下链接时间:2020-10-03...转载 2020-10-03 17:57:19 · 169 阅读 · 0 评论 -
feof() 巨坑有兴趣了解一下!!!
一、feof()是什么?feof()是检测流上的文件结束符的函数,如果文件结束,则返回非0值,否则返回0一般在文件操作,中经常使用feof()判断文件是否结束。二、feof()的经典错误#include<stdio.h>int main(void){ FILE *p; p = fopen("open.txt", "r"); if (feof(p)) { printf("文件为空。"); } else {原创 2020-09-21 00:28:52 · 1537 阅读 · 1 评论 -
Linux服务器 - http服务器需求分析-客户端请求 | 服务端响应
起语:版权声明: 腾讯课堂->奇牛学院.我只是用来方便学习 && 复习!!! 我只是一个学习者, 内功有限, 大家看到谨慎参考!!! 我建议多看官方文档.http服务器需求分析-客户端请求何为http协议HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。请求格式:客户端请求客户端发送一个 HTTP请求到服务器的请求消息包翻译 2020-09-03 14:20:33 · 372 阅读 · 0 评论 -
Linux服务器 - http服务器需求分析
起语:版权声明: 腾讯课堂->奇牛学院.我只是用来方便学习 && 复习!!! 我只是一个学习者, 内功有限, 大家看到谨慎参考!!! 我建议多看官方文档.http服务器需求分析项目需求实现一个http服务器项目,服务器启动后监听80端口的tep连接,当用户通过任意一款浏览器(IE、火狐和腾讯浏览器等)访问我们的http服务器,http服务器会查找用户访问的html页面是否存在,如果存在则通过http协议响应客户端的请求,把页面返回给浏览器,浏览器显示html页面;如翻译 2020-09-03 00:32:36 · 637 阅读 · 0 评论 -
Linux服务器 - 文件操作 | Linux文件锁(下)
起语:版权声明: 腾讯课堂->奇牛学院.我只是用来方便学习 && 复习!!! 我只是一个学习者, 内功有限, 大家看到谨慎参考!!! 我建议多看官方文档.文件锁1)并发对文件I/O操作的影响解决办法?2)文件锁用法: man 2 fentl文件锁的表示 struct flockstruct flock结构体说明struct flock { ... short l_type; /* Type of lock:翻译 2020-09-02 22:40:13 · 311 阅读 · 0 评论 -
linux下0666和0777权限所代表的意思
linux下0666和0777权限所代表的意思r 用数字表示 = 4w 用数字表示 = 2x想用数字表示 = 1- 用数字表示 = 0用与所在的函数://int open(const char *pathname, int flags, mode_t mode); (原型)int fd = open(FILE_NAME, O_RDWR | O_CREAT, 0666);结语:时间: 2020-09-02...原创 2020-09-02 15:59:34 · 4137 阅读 · 0 评论 -
Linux服务器 - 文件操作 | Linux文件锁(上)
起语:版权声明: 腾讯课堂->奇牛学院.我只是用来方便学习 && 复习!!! 我只是一个学习者, 内功有限, 大家看到谨慎参考!!! 我建议多看官方文档.文件锁1)并发对文件I/O操作的影响解决办法?2)文件锁用法: man 2 fentl文件锁的表示 struct flockstruct flock结构体说明struct flock { ... short l_type; /* Type of lock:翻译 2020-09-02 10:38:21 · 343 阅读 · 0 评论 -
Linux中文man手册安装
起语:版权声明: https://www.cnblogs.com/niaocaizhou/p/10948232.html我只是用来方便学习 && 复习!!! 我只是一个学习者, 内功有限, 大家看到谨慎参考!!! 如果复制粘贴错了看上面这个网站即可. (官方手册还是必需安排上)Linux中文man手册安装1.下载源码源码网址(知道即可)https://src.fedoraproject.org/repo/pkgs/man-pages-zh-CN/下载源码(知道即可)wget翻译 2020-08-30 21:30:33 · 355 阅读 · 1 评论 -
Linux服务器 - 文件操作 | proc文件系统
起语:版权声明: 腾讯课堂->奇牛学院.我只是用来方便学习 && 复习!!! 我只是一个学习者, 从来不对我说过的话负责, 大家看到谨慎参考!!!proc文件系统/proc是一个特殊的文件系统,该目录下文件用来表示与启动、内核相关的特殊信息1) /proc/cpuinfo CPU详细信息 2) /proc/meminfo 内存相关信息3) /proc/version 版本信息4) /proc/sys/fs/file-max系统中能同时翻译 2020-08-20 17:32:59 · 236 阅读 · 0 评论 -
Linux服务器 - 文件操作 | 突然宕机的解决之道
起语:版权声明: 腾讯课堂->奇牛学院.我只是用来方便学习 && 复习!!! 我只是一个学习者, 从来不对我说过的话负责, 大家看到谨慎参考!!!解决之道#define _GNU_SOURCE#include <stdio.h>#include <string.h>#include <stdlib.h>#include <errno.h>#include <unistd.h>#include <s翻译 2020-08-20 16:11:54 · 416 阅读 · 0 评论 -
Linux服务器 - 文件操作 | 缓存同步及标准IO流程
起语:版权声明: 腾讯课堂->奇牛学院.我只是用来方便学习 && 复习!!! 我只是一个学习者, 从来不对我说过的话负责, 大家看到谨慎参考!!!缓存同步及标准IO流程直接IO实现方式注意!更好的方式?缓存同步Linux文件IO流程图具体操作$ man 2 open #查看帮助文档$ man fsync #查看帮助文档结语:时间: 2020-08-20...翻译 2020-08-20 15:04:37 · 270 阅读 · 0 评论 -
Linux服务器 - 文件操作 | Linux文件IO深入剖析(直接IO和标准文件IO对比)
直接IO和标准文件IO对比具体代码直接IO的代码#define _GNU_SOURCE#include <stdio.h>#include <string.h>#include <stdlib.h>#include <errno.h>#include <unistd.h>#include <sys/stat.h>#include <sys/types.h>#include <fcntl.h>翻译 2020-08-15 21:02:06 · 171 阅读 · 0 评论 -
Linux服务器 - 文件操作 | 标准I/O库 | Linux文件IO深入剖析
Linux文件系统基本概念文件系统接口文件系统 -一种把数据组织成文件和目录的存储方式,提供了基于文件的存取接口,并通过文件权限控制访问。文件系统缓存主存(通常是DRAM)的一块区域,用来缓存文件系统的内容,包含各种数据和元数据。文件I0访问方式概述标准文件访问方式...翻译 2020-08-15 17:06:52 · 159 阅读 · 0 评论 -
Linux服务器 - 文件操作 | 标准I/O库 | Linux文件IO深入剖析(标准文件I0概述)
标准I/O库直接使用系统调用的缺点(1) 影响系统性能系统调用比普通函数调用开销大因为,系统调用要进行用户空间和内核空间的切换(2) 系统调用一次所能读写的数据量大小,受硬件的限制 解决方案: 使用带缓冲功能的标准I/O库(以减少系统调用次数) /* C语言中的文件操作中已描述 */1) fwrite2) fread3) fopen4) fclose5) fseek 6) fflushLinux文件IO深入剖析某故事惨不忍睹 - 差点赔付百翻译 2020-08-15 09:13:23 · 164 阅读 · 0 评论 -
Linux服务器 - 文件操作(系统调用)
文件操作系统调用目录1)系统调用概述2)系统调用实现3)执行系统调用方法4)如何高效执行系统调用系统调用概述相关概念回顾操作系统 - 管理计算机硬件与软件资源的软件,是用户与系统交互的操作接口,为它上面运行的程序提供服务。操作系统内核 - 操作系统的核心。负责管理系统的进程、内存、设备驱动程序、文件和网络系统。一个内核不是一套完整的操作系统,如Linux。Linux操作系统 - 基于Linux 内核的操作系统。通常由Linux内核、shell(特殊的应用程序,提翻译 2020-08-06 16:00:34 · 289 阅读 · 0 评论 -
Linux服务器 - 文件操作(底层文件操作 - ioctl)
文件操作底层文件操作(关于文件的系统调用) ioctl ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。 所谓对I/O通道进行管理,就是对设备的一些特性进行控制, 例如串口的传输波特率、马达的转速等等。是设备驱动程序中设备控制接口函数, 用来控制设备.函数名: ioctl功 能: 控制I/O设备用 法: int ioctl(int fd, int cmd,[int *argdx, int argcx]);参数:fd是用户程序打开设备时使翻译 2020-07-31 10:04:28 · 420 阅读 · 1 评论 -
Linux服务器 - 文件操作(底层文件操作 - lseek 用法)
文件操作底层文件操作(关于文件的系统调用)lseek (1) 用法 man 2 lseek (2) 返回值 成功:返回新的文件位置与文件头之间偏移 失败: -1 实例:从文件偏移量100的位置拷贝100个字节到另一个文件 lseek_demo.c#include <sys/types.h>#include <sys/stat.h>#include <fcntl.翻译 2020-07-31 09:41:55 · 260 阅读 · 0 评论 -
Linux服务器 - 文件操作(底层文件操作 - close用法)
文件操作底层文件操作(关于文件的系统调用)close (1) 用法 man 2 close 终止指定文件描述符与对应文件之间的关联, 并释放该文件描述符,即该文件描述符可被重新使用 (2)返回值 成功: 0 失败: -1 实例: 使用read/write实现文件翻译 2020-07-30 22:29:23 · 658 阅读 · 0 评论 -
Linux服务器 - 文件操作(底层文件操作 - open用法)
文件操作底层文件操作(关于文件的系统调用)open (1) 用法 main 2 open (2) 返回值 成功:文件描述符 失败:-1 (3) 打开方式 O_RDONLY 只读 O_WRONLY 只写 O_RDWR 读写 O_CREAT 如果文件不存在,则创建该文件,并使用第3个 参数设置权限,翻译 2020-07-30 21:00:28 · 470 阅读 · 0 评论 -
Linux服务器 - 文件操作(底层文件操作 - read用法)
文件操作底层文件操作(关于文件的系统调用)read(1)用法 man 2 read (2)返回值 >0 : 实际读取的字节数 0 : 已读到文件尾 -1 :出错 注意:参数3表示最多能接受的字节数,而不是指一定要输入的字节数 实例:main2.c 运行:# ./a.out /* 用户输入回车符时结束输入 */ # ./a.out < main翻译 2020-07-30 17:15:43 · 781 阅读 · 0 评论 -
Linux服务器 - 文件操作(底层文件操作 - write用法)
文件操作底层文件操作(关于文件的系统调用)1) write (1) 用法 man 2 write (2) 返回值 成功:返回实际写入的字节数 失败:返回 -1, 错误编号设置 errno 可用( strerror(errno) ) 查看 注意:是从文件的当前指针位置写入! 文件刚打开时,文件的位置指针指向文件头 实例:main1.c#include <翻译 2020-07-30 16:41:55 · 421 阅读 · 0 评论 -
Linux服务器 - 文件操作_文件操作方式
文件操作文件操作方式0) 文件描述符 fd是一个>=0的整数每打开一个文件,就创建一个文件描述符,通过文件描述符来操作文件预定义的文件描述符:0:标准输入,对应于已打开的标准输入设备(键盘)1:标准输出,对应于已打开的标准输出设备(控制台)2. 标准错误, 对应于已打开的标准错误输出设备(控制台)多次打开同一个文件,可得到多个不同的文件描述符。1) 使用底层文件操作(系统调用)比如:read可使用man 2 查看2) 使用I/O库函数比如:fread可使用man 3翻译 2020-07-25 17:39:51 · 287 阅读 · 0 评论 -
Linux服务器 - 文件操作_文件概念和结构
文件操作1. 文件的作用linux中,一切皆文件(网络设备除外)硬件设备也“是”文件,通过文件来使用设备目录(文件夹)也是一种文件2. Linux的文件结构root:该目录为系统管理员(也称作超级管理员)的用户主目录。bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。dev:dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访翻译 2020-07-25 15:46:48 · 257 阅读 · 0 评论 -
Linux服务器 - Socket编程函数_出错处理函数
Socket编程函数出错处理函数我们知道,系统函数调用不能保证每次都成功,必须进行出错处理,这样一方面可以保证程序逻辑正常,另一方面可以迅速得到故障信息。出错处理函数#include <errno.h>#include <string.h>char strerror(int errnum); / See NOTES */errnum:传入参数,错误编号的值,一般取 errno 的值返回值:错误原因=============================翻译 2020-07-24 22:39:31 · 339 阅读 · 0 评论 -
Linux服务器 - Socket编程函数_connect函数
Socket编程函数connect函数#include <sys/types.h> /* See NOTES */#include <sys/socket.h>int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);sockdf:socket文件描述符addr:传入参数,指定服务器端地址信息,含IP地址和端口号addrlen:传入参数,传入sizeof(addr)大小翻译 2020-07-24 21:15:17 · 564 阅读 · 2 评论 -
Linux服务器 - Socket编程函数_accept函数
Socket编程函数accept函数#include <sys/types.h> /* See NOTES */#include <sys/socket.h>int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);sockdf:socket文件描述符addr:传出参数,返回链接客户端地址信息,含IP地址和端口号addrlen:传入传出参数(值-结果),传入sizeof(addr)大小,翻译 2020-07-24 18:56:16 · 3055 阅读 · 0 评论 -
Linux服务器 - Socket编程函数_listen函数
Socket编程函数listen函数#include <sys/types.h> /* See NOTES */#include <sys/socket.h>int listen(int sockfd, int backlog);sockfd:socket文件描述符backlog:在Linux 系统中,它是指排队等待建立3次握手队列长度查看系统默认backlogcat /proc/sys/net/ipv4/tcp_max_syn_backlog改变 系统限制的b翻译 2020-07-24 17:55:00 · 380 阅读 · 0 评论 -
Linux服务器 - Socket编程函数_bind 函数
Socket编程函数bind 函数#include <sys/types.h> /* See NOTES */#include <sys/socket.h>int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);sockfd:socket文件描述符addr:构造出IP地址加端口号addrlen:sizeof(addr)长度返回值:成功返回0,失败返回-1, 设置errno服务器翻译 2020-07-24 17:04:30 · 358 阅读 · 0 评论 -
Linux服务器 - Socket编程函数_socket函数
Socket编程函数socket 函数#include <sys/types.h> /* See NOTES */#include <sys/socket.h>int socket(int domain, int type, int protocol);domain:AF_INET 这是大多数用来产生socket的协议,使用TCP或UDP来传输,用IPv4的地址AF_INET6 与上面类似,不过是来用IPv6的地址AF_UNIX 本地协议,使用在Unix和Linux系翻译 2020-07-24 16:25:09 · 259 阅读 · 0 评论 -
Linux服务器 - Socket编程基础_IP地址转换函数
IP地址转换函数#include <arpa/inet.h> int inet_pton(int af, const char *src, void *dst); const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);af 取值可选为 AF_INET 和 AF_INET6 ,即和 ipv4 和ipv6对应支持IPv4和IPv6其中inet_pton和inet_ntop不仅可以转换IPv4翻译 2020-07-24 15:08:02 · 258 阅读 · 0 评论 -
Linux服务器 - Socket编程基础_sockaddr数据结构
Socket编程基础sockaddr数据结构很多网络编程函数诞生早于IPv4协议,那时候都使用的是sockaddr结构体,为了向前兼容,现在sockaddr退化成了(void *)的作用,传递一个地址给函数,至于这个函数是sockaddr_in还是其他的,由地址族确定,然后函数内部再强制类型转化为所需的地址类型。struct sockaddr { sa_family_t sa_family; /* address family, AF_xxx */ char sa_data[14]; /翻译 2020-07-24 09:31:29 · 267 阅读 · 0 评论 -
Linux服务器 - Socket编程基础_网络字节序
Socket编程基础 - 网络字节序网络字节序在计算机世界里,有两种字节序:大端字节序 - 低地址高字节,高地址低字节小段字节序 - 低地址低字节,高地址高字节内存中的多字节数据相对于内存地址有大端和小端之分,磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分。网络数据流同样有大端小端之分,那么如何定义网络数据流的地址呢?发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出,接收主机把从网络上接到的字节依次保存在接收缓冲区中,也是按内存地址从低到高的顺序保存,因此,网络数据流的翻译 2020-07-23 23:10:23 · 185 阅读 · 0 评论 -
Linux服务器 - Socket 编程详解_套机字概述
Socket 编程详解套接字概念Socket中文意思是“插座”,在Linux环境下,用于表示进程x间网络通信的特殊文件类型。本质为内核借助缓冲区形成的伪文件。既然是文件,那么理所当然的,我们可以使用文件描述符引用套接字。Linux系统将其封装成文件的目的是为了统一接口,使得读写套接字和读写文件的操作一致。区别是文件主要应用于本地持久化数据的读写,而套接字多应用于网络进程间数据的传递。在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯一标识网络通讯中的一个进程。“IP地址+端口号”就对应一个s翻译 2020-07-23 20:48:29 · 117 阅读 · 0 评论 -
Linux服务器 - 小练习实现
项目实现实现回声服务器的客户端/服务器程序,客户端通过网络连接到服务器,并发送任意一串英文信息,服务器端接收信息后,将每个字符转换为大写并回送给客户端显示。#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <string.h>#include <ctype.h>#include <翻译 2020-07-23 18:19:10 · 185 阅读 · 0 评论