自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

向念freetree

念念不忘 必有回响

  • 博客(26)
  • 收藏
  • 关注

原创 多进程解决socket并发问题

概念了解上一篇博客的socket程序只能实现服务器连接一个客户端,不能解决并发问题,及多个客户端同时连接。下面的程序采用多进程的思想,在accept()调用之后利用fork()产生子进程代码实现#include<stdio.h>#include<stdlib.h>#include<string.h>#incl

2018-05-14 14:39:49 3307

原创 电脑重装系统,加固态常见问题

电脑觉得卡顿,不够流畅一般就是自己刷系统,加内存条,或者换个固态硬盘。刷系统最廉价,网上一键重装系统的软件多得很,小马,大白菜,韩博士等,这些软件基本只需要一直点‘下一步’就可以。不怕麻烦的也可以自己制作个系统U盘,用U盘装。(那些软件其实挺好的,一般的人没必要用U盘,除非电脑开不了机,非得用U盘)内存条今

2017-11-13 21:09:00 6570

原创 select

1. select函数1. 用途 在编程的过程中,经常会遇到许多阻塞的函数,好像read和网络编程时使用的recv, recvfrom函数都是阻塞的函数,当函数不能成功执行的时候,程序就会一直阻塞在这里,无法执行下面的代码。这是就需要用到非阻塞的编程方式,使用select函数就可以实现非阻塞编程。<br /> select函数是一个轮循函数,循环询问文件节点,可设...

2019-08-06 21:13:19 212

原创 C语言贪吃蛇小游戏

C语言编写贪吃蛇整个代码都是C语言,其中调用少部分库函数,不如实现屏幕坐标打印的函数,贪吃蛇游戏代码的核心在于蛇身体坐标的更新,实现细节请看代码注释,代码//#include "stdafx.h" 如果是vc环境的话加上该头文件 #include<stdlib.h>#include <stdio.h>#include <windows.h...

2018-08-27 21:54:48 1475

原创 利用openssl的socket加密传输

强大的 Openssl这里 主要是运用强大的openssl实现数据的加密传输。OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用 openssl是一个开源项目,其组成主要包括一下三个组件: openssl:多用途的命令行工具libcrypto:加密算法库libs...

2018-07-19 13:46:08 6134 2

原创 结构体嵌套与结构体指针

struct和typedef struct首先是结构体的定义格式分三块来讲述:  1 首先://注意在C和C++里不同    在C中定义一个结构体类型要用typedef:    typedef struct Student    {    int a;    }Stu;    于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来...

2018-07-18 21:19:25 8801

原创 linux信号的初步了解

1 引言信号是软件中断。很多重要的应用程序都需要处理信号。信号提供了一种处理异步事件的方法。例如,终端用户键入终端键,会通过信号机制停止一个程序,或者及早终止管道中的下一个程序。2信号概念每个信号都有一个名字。如下图: 这些信号都以SIG开头。例如: SIGALRM是闹钟信号,由alarm函数设置的定时器超时后将产生此信号 SIGINT是kill命令发送的系统默认终止信号。一...

2018-07-05 16:37:58 237

原创 操作系统内存管理相关概念

参考博客 https://blog.csdn.net/oMengLiShuiXiang1234/article/details/51536771 另附一篇博文,比较详细的讲解了分页与分段 https://blog.csdn.net/cn_wk/article/details/52736466 在CPU中可以看到高速缓存,由于指令执行和访问数据都需要从内存里读数据,如果此时有大量数据要读写而...

2018-07-03 13:57:41 268

原创 一个函数分析多继承构造函数

构造函数一般有两种书写格式类名::类名(形参表){函数体} 比如:Circle::Circle(float r){radious=r;}类名::类名(形参表):内嵌对象1(形参表),内嵌对象2(形参表){函数体} 比如:Deriverd(int a,int b,int c,int d):Base1(a),member2(d),member(c),Base2(b) {} 实例分...

2018-06-21 19:07:21 688

转载 Wireshark抓包分析

部分内容转载自此博客链接,感谢博主分享 https://blog.csdn.net/qicheng777/article/details/744521361.认识Wireshark捕获数据包当我们对Wireshark主窗口各部分作用了解了,学会捕获数据了,接下来就该去认识这些捕获的数据包了。Wireshark将从网络中捕获到的二进制数据按照不同的协议包结构规范,显示在Packet Det...

2018-06-17 23:05:42 2597

原创 mem系列与str系列函数了解

系列函数通常处理内存内容,而Str通常处理字符串,这俩个家族系列函数经常会使用,在网上搜集了一些资料进行了整理,方便自己以后查阅,下面介绍了memcpy,strcpy,strncpy,memmove,memcmp,strcmp,strcat,strstr,strtok等函数:一 拷贝函数函数名称: memcpy函数原型:void *memcpy(void *dest, const ...

2018-06-17 09:20:23 1000

原创 epoll解决socket并发问题

epoll了解select会在第一个与最大文件描述符之间挨个遍历一遍,会造成时间和cpu的浪费,而epoll则解决了这一问题,通过先在注册表中注册的方式,使得每次都只用遍历已有的文件描述符,会节省cpu资源。struct epoll_event结构体epoll_event被用于注册所感兴趣的事件和回传所发生待处理的事件,定义如下: typedef union epoll_d...

2018-05-17 15:49:31 1568

原创 多线程解决socket并发问题

概念这篇博客我们利用多线程解决服务器并发问题进程是资源分配最小的单位,线程是CPU调度的最小单位多进程与多线程比较(下图取自网络,原作者不详) 对比维度多进程多线程总结数据共享、同步数据共享复杂,需要用IPC;数据是分开的,同步简单因为共享进程数据,数据共享简单,但也是因为这个原因导致同步复杂各有优势内存、CPU占...

2018-05-14 16:38:50 2201

原创 linux下C语言socket的基本实现

概念了解网络由下往上分为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层,三者从本质上来说没有可比性,为了概念更加的清晰,我们还是得了解一下三者之间的关系。 我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容。 如果想要使传输的...

2018-05-13 22:52:55 1111

原创 通信协议梳理-----物联网

1 概述最近在弄linux下的socket编程,对于目前的市场上多种的通信与通讯协议,概念比较的模糊,通过学习,作了以下的整理,部分图片来自网络,不过搞不清谁是原作者,只能在这表示感谢了。在我们的生活中TCP/IP估计是我们经常会听说的,不过除了走网络层TCP/IP的多种应用层协议外,还有多种不走TCP/IP的物理链路层协议。下图很直观。  2身边的通信协议通...

2018-05-11 20:32:05 645

原创 fl2440实现AP功能

前些日子完成了fl2440的一些功能,现在来对其做一些整理 RT3070无线网卡有两种工作模式STA模式和softAP模式,分别由STA驱动和softAP驱动来实现,STA驱动支持无线网卡工作在STA模式下,可以连接到网络实现上网功能。而SoftAP的驱动支持无线网卡工作在softAP模式下,可以作为一个软的接入点,实现无线路由器功能。在前面一篇博客总结了STA模式的驱动移植,使得我们的开发...

2018-05-06 19:14:22 344

原创 linux生活小妙招

虚拟机ip变化虚拟机在使用的过程中,可能虚拟网卡的ip地址可能会出现变化,这就导致自己的secureCRT连不上自己的虚拟机,此时就需要重新连新的IP地址。但是这样做会导致自己CRT以前配置的颜色丢了。 那么就要 Options-Global options –General–Default Session –Emulation 中的 Terminal选项选择 Xterm 或者 Linux...

2018-04-30 15:45:28 288

原创 fl2440实现路由器sta功能

S3C2440采用了由 ARM(Advanced RISC Machines) 公司研制ARM920T内核rt3070中文名称为雷凌3070,是台湾雷凌科技有限公司生产的一款专用于usb无线网卡的处理芯片。 它完全符合符合IEEE 802.11n草案4.0和IEEE 802.11 b / g标准。路由器sta功能的实现依托fl2440这块开发板以及linux-3.0内核。makemen...

2018-04-26 19:36:21 413

原创 fl2440最小系统移植梳理

fl2440最小系统移植梳理所谓的嵌入式开发就是自己DIY一个系统,放到开发板上跑。最小系统则是基于linux内核,考虑开发板实际硬件的一个最简单的系统。准备工作:在linux下制作好自己的交叉编译器一    fl2440开发板的了解,创建fl440项目框架[xn@localhost fl2440]$ tree|-- 3rdparty 今后移植到ARM开发板上的第三方应用程序软件包|-- boot...

2018-04-16 12:22:49 344

原创 patch diff 补丁文件

diff 和 patch 是一对工具,使用这对工具可以获取更新文件与历史文件的差异,并将更新应用到历史文件上。在数学上说,diff就是对两个集合的差运算,patch就是对两个集合的和运算。在数学上我们知道: A - B = C, 这样我们知道 A、B、C中任意两个数都可以得到第三个数:下面我们以linux-3.0内核举例说明:如下图所示,linux目录下有从官网下载的内核源码linux-3.0,还...

2018-04-15 14:05:24 1204

原创 git push常见问题罗列

1.问题:git push时遇到问题“fatal: No destination configured to push to.”首先git remote -v查看远程库信息,如果没有相关信息出现,说明电脑与远程库没有关联,则输入:git remote add origin [email protected]:XiangNianFreestyle/fl2440.git还是不行的话就先从远程库...

2018-04-12 20:56:15 1020

原创 git 学习实践

git是一种版本控制器,记录每次文件的改动,能够帮助我们管理自己的代码。安装git一般的linux系统默认安装的有git软件,如果没有安装,先安装软件!使用码云1注册账号2创建一个项目3通过公钥建立服务器与主机间的连接(1) Linux上对git进行全局配置[xn@centos6_master ~]$ git config --global user.name "xiangnain"[xn@cen...

2018-04-11 14:02:10 265

原创 驱动开发——hello模块

驱动开发之hello模块1 linux内核理解: Linux 内核可以进一步划分成 3 层。最上面是系统调用接口(SCI,System Call Interface),它实现了一些基本的功能,例如 open()、read()、write()、close()等。系统调用接口之下是内核代码,可以更精确地定义为独立于体系结构的内核代码。这些代码是 Linux 所支持的所有处理器体系结构所通用的。在这些代...

2018-04-02 18:05:26 384

原创 交叉编译器理解

交叉编译器理解交叉编译这个概念的出现和流行是和嵌入式系统的广泛发展同步的。我们常用的计算机软件,都需要通过编译的方式,把使用高级计算机语言编写的代码(比如C代码)编译(compile)成计算机可以识别和执行的二进制代码。本地编译:我们在Windows平台上,可使用Visual C++开发环境,编写程序并编译成可执行程序。交叉编译:交叉编译可以理解为,在当前编译平台下,编译出来的程序能运行在体系结构...

2018-04-01 14:52:05 393

原创 C语言指针

c语言指针学习指针只有两层含义,1:指向地址,2:指针有类型,类型是其指向的内存空间数据的类型,表示从首地址开始取多少字节。C语言相比于其他高级语言,不仅是运行速度快,而且还能够直接操作硬件,操作硬件就是依靠C语言指针这一强大功能实现的,学会C语言指针,就好像是武林高手打通了任督二脉,能大幅度提升编程能力。地址是个什么东西:计算机存储的数据都有一个唯一的地址,32位系统就是8位16进制数表示的。比...

2018-03-30 22:19:08 4242 3

原创 动态库 静态库

首先我们来想一下库到底是什么?库是封装的一段成熟,写好的,能直接拿来用的代码。比如我们常用的printf函数就是一个库,我们直接调用就行,这些底层库的存在,简化了编程难度,提高了工作效率。同时可以隐藏源代码,保护创意,用代码挣钱。程序编译过程。1,预处理(gcc -E hello.c -o hello.i)     对其中的伪指令(以#开头的指令,也就是宏)和特殊符号进行“替代”处

2017-10-14 16:45:57 256

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除