自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 资源 (1)
  • 收藏
  • 关注

原创 VLC for Linux 无法播放FLV视频

本篇文章记录Linux Mint 17.2下 VLC 播放器无法播放FLV格式视频的解决办法!最近重新安装了Linux Mint,在更新系统时发现有两个包无法被更新,估计是依赖问题,运行命令的输出如下:sudo apt-get upgrade然后我尝试搜索了这两个包,想看看更新的版本是什么;又执行命令:sudo apt-cache search libavcodec54结果:更新的包名查到了,手动安

2015-09-19 18:00:30 3067

原创 Sublime Text 3 中文输入 快速解决方案

Sublime Text 3 安装完成后,默认情况下fcitx是不能输入中文的,这里记录一个快速修复方法:具体操作看这个开源项目:https://github.com/lyfeyaj/sublime-text-imfix

2015-09-17 18:50:14 1619

原创 【网络】(十二)UDP简介

1、UDP特点无连接;UDP不维护端到端的连接状态基于消息的数据传输服务;不存在粘包问题,可认为数据包之间是有边界的不可靠;数据包可能丢失、重复、乱序,它缺乏流量控制一般情况下UDP更加高效;2、UDP编程模型3、echo服务器和客户端的UDP实现服务端代码#include <stdio.h>#include <stdlib.h>#include <errno.h>#include

2015-09-16 11:38:17 784

原创 【网络】(十一)更高效的epoll

第十篇文章中将select函数换做了poll,解决了客户端最大并发数量限制的问题,

2015-09-15 19:58:00 875

原创 【网络】(十)select的限制与解决方法poll

在前面的《第七篇》和《第八篇》文章中已经使用select函数对服务器和客户端进行了重写,但这有个问题存在,如果有非常多的客户端需要连接到服务器,那很可能连接到1020个客户端时,服务端就会报错了,原因在于用select实现的并发服务器能够达到的并发数,受两方面限制一个进程能打开的最大文件描述符限制,这可通过调整内核参数修改!select中的fd_set集合容量的限制(FD_SETSIZE),它不

2015-09-15 16:07:39 1110

原创 【网络】(九)close与shutdown

1、两者的区别close函数会终止数据传送的两个方向,包括套接口的读取和写入;shutdown函数可以有选择的终止某个方向的数据传送,或者终止两个方向;shutdown函数的how参数如果为SHUT_RDWR,表示关闭了套接口的写端,可以保证此时对方会收到一个FIN段,并导致对方read函数读取到EOF并返回0,shutdown函数关闭写端时总会这么做, 它不理会套接字引用计数;而close

2015-09-14 16:40:40 727

原创 【网络】(八)I/O复用--Select(二)

第七篇文章中简介了几种IO模型,也使用select函数改进客户端的代码,本篇文章用它来改进一下服务端代码!用select函数实现的服务器程序,叫做并发服务器,它还是在排队处理任务,无法并行处理这些事件!1、select事件发生条件0.1 可读事件套接口缓冲区有数据可读;连接的读一半关闭,即接收到FIN段时,可读,并且读操作会返回0如果是监听套接口,已完成队列不为空时,可读;即有新的连接请求套

2015-09-14 11:01:31 787

原创 【网络】(七)五种I/O模型--I/O复用 Select(一)

1、五种I/O模型五种I/O模型分别是:阻塞I/O非阻塞I/OI/O复用(select/poll)信号驱动I/O异步I/O0.1 阻塞I/O连接完成,我们通常使用recv函数读取数据,如果此时没有数据,那么该函数阻塞,直到对方发送的数据到达套接口缓冲区,此时该函数将数据复制到用户缓冲区中,并返回!0.2 非阻塞I/O连接完成,调用recv函数,并将套接口设置为非阻塞模式(fcntl(sk

2015-09-13 20:33:54 957

原创 【网络】(六)TCP的十一种状态

1、TCP 十种状态过程描述:0.1 服务器B和客户端A中的套接字都处于CLOSE状态(图中未标出)0.2 服务器B调用socket/bind/listen函数创建了一个套接字后,处于LISTEN状态,该套接字属于被动套接字,被动套接字不能用来发起连接,只能接受连接0.3 客户端A调用socket/connect函数创建一个套接字后,处于SYN_SENT状态,该套接字属于主动套接字,用来发起连

2015-09-13 17:32:12 3683

原创 【网络】(五)避免僵尸进程

前面的四篇文章中,对于僵尸进程都只做了简单的处理,我忽略了子进程退出时发送给父进程的SIGCHLD信号,本篇文章来详细谈论一下僵尸进程!1、为什么会有僵尸进程?当父进程fork出的子进程运行结束后,为了父进程还能够获得子进程的一些信息,系统会维护子进程的一些信息,这些信息包括子进程的进程ID、终止状态以及资源利用信息(CPU时间,内存使用量等等)。如果一个进程终止,而该进程有子进程处于僵尸状态,那么

2015-09-13 11:10:55 891

原创 【网络】(四)网络相关函数使用简介

1、getsockname用于获取自己的ip和端口使用举例: struct sockaddr_in localaddr; socklen_t len = sizeof(localaddr); memset(&localaddr,0,sizeof(localaddr)); //获取自己的ip和端口 if(getsockname(sk_fd,(struct socka

2015-09-12 18:06:47 438

原创 【网络】(三)流协议粘包问题

在第二篇中,谈到了流协议的粘包问题以及一种解决方法的实现,在数据的开始显示的指明数据的长度;这是一种不错的解决方法,另外,也有说到可以根据数据中的特殊字符来判断是否接收完了一整条消息,本篇将在上一篇的基础上实现这一方法!原理:依据数据尾部是否有’\n’,来表示消息是否接收完成1、核心函数实现//使用recv函数从套接字接收缓冲区中接收数据,但并不从缓冲去中清除数据ssize_t recv_peek

2015-09-12 16:55:27 758

原创 【网络】(二)流协议粘包问题

1、流协议与粘包  TCP协议是基于字节流的,数据无边界,无边界反应在对方接收消息时无法保证一次性返回多少个字节,有可能收到的不是一个完整的消息,可能是半个消息、或者多于一个消息,这就是TCP的粘包问题  UDP协议基于数据报,数据有边界,体现在对方一次收到的是一个完整的消息产生粘包的因素  如上图所示,应用层首先用write函数将要发送的数据拷贝到套接字发送缓冲区中,该缓冲区的大小由SO_SNDB

2015-09-12 15:35:24 828

原创 【网络】(一)Socket 简介

1、什么是socket? socket可以看成是用户进程与内核网络协议栈的编程接口。 socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信!     2、IPv4套接字地址结构 通常也被称为“网际套接字地址结构”,名为:sockaddr_in,位于头文件struct sockaddr_in{ uint8_t sin_len; //整个结构体长度

2015-09-12 09:54:02 749

原创 获取进程能打开的最大文件数量【OPEN_MAX】

手上一个小项目,需要获取一个当前Linux操作系统下,一个进程能打开的最大文件数目,在《linux程序设计 第4版》 85页有说:  任何一个运行中的程序能够同时打开的文件数是有限制的,这个限制通常是由limits.h头文件中的常量OPEN_MAX定义的,它的值随系统的不同而不同,但POSIX要求它至少为16!  但我尝试使用该宏时,却已经找不到该宏的定义了,查了一下资料,才知道2.6.24以后的内

2015-09-09 11:09:12 7919 4

VISUAL_C++实践与提高:串口通信与工程应用篇

VISUAL_C++实践与提高:串口通信与工程应用篇,本压缩包内包含完整版的PDF与本书配套光盘!资源来源于网络!

2014-12-11

空空如也

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

TA关注的人

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