排序:
默认
按更新时间
按访问量

每日一篇--获取设备ip地址

方法有许多,仅给出最容易看的一种 #include <stdio.h> #include <arpa/inet.h> #include <netdb.h> #in...

2018-08-15 15:32:05

阅读数:72

评论数:0

每日一篇--获取文件夹下指定后缀的所有文件名

#include <stdlib.h> #include <stdio.h> #include <dirent.h> #define SUFFIX &...

2018-08-13 12:36:53

阅读数:71

评论数:0

通讯系统评价指标

•一、有效性指标 –1、数据传输速率 •比特率:通讯系统单位时间内传输数据的二进制位数。(bit/s) •波特率:通讯系统单位时间内传输信号波形的变化次数。(baud) –2、频率利用率:单位频带内的传输速度。单位为:(bit/s.hz) –3、协议效率:所传输的数据包中的有效数据位数占...

2018-08-04 14:45:20

阅读数:112

评论数:0

二叉树(理论篇)

   一、什么是树?         在前几篇的博文中主要讲述的是链式存储这种数据结构,它们的用途非常广泛,但是在实际的应用中,还存在着另一种非常重要的数据结构,它就是树。树的结构示意图如下所示:         上图就是一种数据结构----树,之所以在每个框中都留出空白,主要原因是这种结...

2018-08-04 14:32:18

阅读数:67

评论数:0

Linux编程之select

select系统调用的的用途是:在一段指定的时间内,监听用户感兴趣的文件描述符上可读、可写和异常等事件。 select 机制的优势 为什么会出现select模型? 先看一下下面的这句代码: int iResult = recv(s, buffer,1024); 这是用来接收数据的,在默...

2018-08-04 14:30:38

阅读数:114

评论数:0

一个简单的Linux下的socket程序

和C语言教程一样,我们从一个简单的“Hello World!”程序切入 socket 编程。本节演示了 Linux 下的代码,server.cpp 是服务器端代码,client.cpp 是客户端代码,要实现的功能是:客户端从服务器读取一个字符串并打印出来。服务器端代码 server.cpp: ...

2018-08-04 14:29:05

阅读数:88

评论数:0

linux简介

严格的来讲,Linux 不算是一个操作系统,只是一个 Linux 系统中的内核,即计算机软件与硬件通讯之间的平台;Linux的全称是GNU/Linux,这才算是一个真正意义上的Linux系统。GNU是Richard Stallman组织的一个项目,世界各地的程序员可以变形GNU程序,同时遵循GPL...

2018-08-04 14:04:57

阅读数:243

评论数:0

TCP的粘包问题以及数据的无边界性

  上节我们讲到了socket缓冲区和数据的传递过程,可以看到数据的接收和发送是无关的,read()/recv() 函数不管数据发送了多少次,都会尽可能多的接收数据。也就是说,read()/recv() 和 write()/send() 的执行次数可能不同。 例如,write()/send()...

2018-08-04 14:04:13

阅读数:76

评论数:0

栈的实现

 一、栈         栈是一种按照先进后出的数据存储结构(LIFO),它检索元素的顺序与存储元素的顺序是相反的。所谓的先进后出是指数据元素的存储与删除操作,这意味着最后一个存储的元素将会第一个被删除。举个例子,现在要把"5,4,3,2,1"存入到“栈”中,...

2018-08-04 14:01:14

阅读数:131

评论数:0

nfs挂载报错:mount.nfs mount system call failed

有可能是版本不匹配,解决方法很简单,加参数 vers=3mount -t nfs -o vers=3,nolock,rw remote_ip:remote_dir local_dir

2018-07-12 09:42:21

阅读数:386

评论数:0

程序退出前的遗言----linux下利用backtrace追踪函数调用堆栈以及定位段错误

一般察看函数运行时堆栈的方法是使用GDB(bt命令)之类的外部调试器,但是,有些时候为了分析程序的BUG,(主要针对长时间运行程序的分析),在程序出错时打印出函数的调用堆栈是非常有用的。在glibc头文件"execinfo.h"中声明了三个函数用于获取当前线程的...

2018-07-05 09:28:51

阅读数:116

评论数:0

高级嵌入式软件工程师必备技能---Linux下core文件调试方法

在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数。1.core文件的生成开关和大小限制  1)使用ulimit -c命令可查看core文件的生成开关。若结果为0,则表示关闭了...

2018-07-04 19:43:31

阅读数:94

评论数:0

linux下tty, ttyn, pts, pty, ttySn, console理解

/dev/tty控制终端,即当前用户正在使用的终端,是一个映射,指向当前所使用的终端(例如/dev/tty1,/dev/pts/0)。往/dev/tty下写数据总是写到当前终端。/dev/ttyn虚拟终端,例如ubuntu不启动图形界面时,那么就会默认连接到/dev/tty1这个虚拟终端。/dev...

2018-07-04 17:10:06

阅读数:94

评论数:0

每日一篇--linux重定向串口打印到telnet(方便远程调式)

在嵌入式开发中,我们都是使用串口进行调试定位问题。然而在成品调试或者远程调试时,没有串口,只能telnet进去,少了很多应用进程的打印,这样就不利于我们发现问题。需要一种方法把串口所有输出重定向到telnet。   这就涉及到一些终端概念,可以参考博文linux下tty, ttyn, pts...

2018-07-04 17:00:55

阅读数:179

评论数:0

tcp套接字中的TIME_WAIT状态

TIMEWAIT状态本身和应用层的客户端或者服务器是没有关系的。仅仅是主动关闭的一方,在使用FIN|ACK|FIN|ACK四分组正常关闭TCP连接的时候会出现这个TIMEWAIT。服务器在处理客户端请求的时候,如果你的程序设计为服务器主动关闭,那么你才有可能需要关注这个TIMEWAIT状态过多的问...

2018-07-03 10:41:29

阅读数:69

评论数:0

每日一篇--为嵌入式系统开发一套内存管理机制

公司的项目都没有自己的内存管理机制,要使用内存时就malloc,不用时就free,感觉有效率问题,而且有内存泄漏的隐患,因此我决定设计一套给嵌入式linux设备使用的内存管理机制(很大部分参考了某开源web服务器中的设计)。   设计思想综述 用Alloc结构体表示一个内存块,内存块的大小有...

2018-05-23 18:51:44

阅读数:236

评论数:0

转发写的很好的一篇文章--ARM介绍

ARM的总部在剑桥,同时在伦敦和纽约上市。市盈率接近50.这在芯片行业是个很夸张的数字,要知道Intel才十几的市盈率。原因有两个,第一名气大,移动界芯片的武林盟主,绝对的市场占有率。第二销售额低,净利也不高,2015年授权费和版税加一起才12亿美金,销售额连国内展讯都赶不上。ARM内部,真正盈利...

2018-05-07 11:29:22

阅读数:276

评论数:0

进程间传递文件描述符--sendmsg,recvmsg,struct msghdr,struct iovec

UNIX域套接字可以在同一台主机上各进程之间传递文件描述符。下面先来看两个函数:[cpp] view plain copy#include <sys/types.h>   #include <sys/socket.h&amp...

2018-04-20 15:55:02

阅读数:285

评论数:0

简单网络管理协议SNMP(史上最全)

简单网络管理协议(SNMP)是TCP/IP协议簇的一个应用层协议。在1988年被制定,并被Internet体系结构委员会(IAB)采纳作为一个短期的网络管理解决方案;由于SNMP的简单性,在Internet时代得到了蓬勃的发展,1992年发布了SNMPv2版本,以增强SNMPv1的安全性和功能。现...

2018-04-20 11:38:26

阅读数:606

评论数:0

利用套接字实现本地通信

使用套接字除了可以实现网络间不同主机间的通信外,还可以实现同一主机的不同进程间的通信,且建立的通信是双向的通信。socket进程通信与网络通信使用的是统一套接口,只是地址结构与某些参数不同。其主要流程如下:代码实现如下:客户端:[cpp] view plain copy//client  #inc...

2018-04-02 13:13:30

阅读数:357

评论数:0

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