- 博客(10)
- 资源 (6)
- 收藏
- 关注
原创 Linux网络编程--IO模型基础
IO的方式有阻塞IO、非阻塞IO模型、IO复用、信号驱动、异步IO等,本文以UDP为例大概介绍这几种IO模型的基础知识和原理。 1.阻塞IO 阻塞IO是最通用的IO类型,使用这种模型进行数据接收的时候,在数据没有到之前程序会一直等待。 2.非阻塞IO模型 3.IO复用 4.信号驱动IO模型 5.异步IO模型
2015-09-10 16:33:11 1841
原创 Linux c 源码(nMAsciiHexToBinary:将16进制字符串格式转换为ASCII码形式)
short nMAsciiHexToBinary(unsigned char* vspSourceStr,short vnSourceStrL,unsigned char* vspDestStr) {if(vnSourceStrL % 2)return -1;for(; vnSourceStrL > 0; vnSourceStrL -= 2
2015-09-22 15:39:46 3678
翻译 刘备坚持攻打东吴,并非要为关羽报仇
刘备坚持攻打东吴,并非要为关羽报仇 根据《三国演义》的描述和大多数人的印象里,刘备倾蜀汉全国之力攻打东吴,是为了给死于东吴之手的义弟关羽报仇。我却认为,刘备之所以出兵攻吴,并不单纯是为了给云长报仇,他还有更深层次的意义。 为什么说刘备伐吴不是为关羽报仇呢? 首先,我们看,关羽败走麦城,被东吴所害是公元219年冬,而刘备大举伐吴则是在时隔近两年之后,曹操病逝,曹丕称帝,刘备也称帝后
2015-09-17 16:15:01 3265
原创 NSdata 与 NSString,Byte数组,UIImage 的相互转换
NSdata 与 NSString,Byte数组,UIImage 的相互转换1. NSData 与 NSStringNSData-> NSStringNSString *aString = [[NSString alloc] initWithData:adataencoding:NSUTF8StringEncoding];NSString->NSDataNSString *aString =
2015-09-17 12:51:27 887
原创 Linux c 源码(issockettype:套接字描述符判定函数)
int issockettype(int fd){ struct stat st; int err = fstat(fd, &st);//获得文件的状态 if( err < 0 ) { return -1; } if((st.st_mode & S_IFMT) == S_IFSOCK) { //利用系统宏,比较
2015-09-11 11:34:00 963
原创 Linux网络编程--非阻塞编程
非阻塞方式程序设计介绍非阻塞方式的操作与阻塞方式的操作最大的不同点是函数的调用立刻返回,不管数据是否成功读取或者成功写入。使用fcntl()将套接字文件描述符按照如下的代码进行设置后,可以进行非阻塞的编程: fcntl(s, F_SETFL, O_NONBLOCK); 其中的s是套接字文件描述符,使用F_SETFL命令将套接字s设置为非阻塞方式后,再进行读写操作就可以马上返回了。非阻塞程序设计的
2015-09-11 11:24:48 2624 1
原创 Linux网络编程--select()和pselect()函数
函数select()和pselect()用于IO复用,它们监视多个文件描述符的集合,判断是否有符合条件的时间发生。 1.select()函数 函数select()与之前的recv()和send()直接操作文件描述符不同。使用select()函数可以先对需要操作的文件描述符进行查询,查看是否目标文件描述符可以进行读、写或者错误操作,然后当文件描述符满足操作的条件的时候才进行真正的IO操作。 se
2015-09-10 17:14:44 12318 2
原创 Linux网络编程--信号阻塞与屏蔽(block,unblock)
Linux下当向一个进程发出信号时,从信号产生到进程接收该信号并执行相应操作的过程称为信号的等待过程(呃,根据对APUE的理解翻译的)。如果某一个信号没有被进程屏蔽,则我们可以在程序中阻塞进程对该信号所相应的操作。例如一个程序当接收到SIGUSR1信号时会进行一个操作,我们可以利用系统API阻塞(block)程序对该信号的操作,直到我们解除阻止。再举个现实的例子:就好像一个同学让我帮他带饭,但是我现
2015-09-10 15:02:10 3603
原创 Linux c 源码(readn:从fd中读取n字节数据)
/* Read "n" bytes from a descriptor. */readn(int fd, void *vptr, size_t n){ size_t nleft; ssize_t nread; char *ptr; ptr = vptr; nleft = n; while (nleft > 0) { if (
2015-09-08 11:15:30 2480
sqlapi 源码
2016-01-11
cuit单元测试
2015-10-19
struct和union计算方法
2015-07-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人