上一页 1 ··· 55 56 57 58 59 60 61 62 63 ··· 71 下一页
摘要: 首先转一段关于回车和换行的历史。回车和换行关于“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别。在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历, 阅读全文
posted @ 2011-05-05 19:37 hnrainll 阅读(874) 评论(0) 推荐(0) 编辑
摘要: 阻塞方式block,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回。使用Select就可以完成非阻塞non-block,就是进程或线程执行此函数时不必非要等待事件的发生,一旦执行肯定返回,以返回值的不同来反映函数的执行情况,如果事件发生则与阻塞方式相同,若事件没有发生则返回一个代码来告知事件未发生,而进程或线程继续执行,所以效率较高。select能够监视我们需要监视的文件描述符的变化情况。(一)首先说明两个结构体:1:struct fd_set一个存放文件描述符(file descriptor),即文件句柄的聚合,实际上是一lon 阅读全文
posted @ 2011-05-05 19:30 hnrainll 阅读(21707) 评论(5) 推荐(4) 编辑
摘要: 转载时请注明出处:http://blog.csdn.net/absurd/大家都知道sscanf是一个很好用的函数,利用它可以从字符串中取出整数、浮点数和字符串等等。它的使用方法简单,特别对于整数和浮点数来说。但新手可能并不知道处理字符串时的一些高级用法,这里做个简要说明吧。1.常见用法。charstr[512] = {0};sscanf("123456 ","%s",str);printf("str=%s\n",str);2.取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。sscanf("123456 &quo 阅读全文
posted @ 2011-05-05 15:15 hnrainll 阅读(822) 评论(0) 推荐(0) 编辑
摘要: 最近遇到了解析配置的问题,用正规表达式感觉大题小做,使用sscanf因只会用基本用法,感觉功能不够,上网搜了下,解析起来不费吹灰之力,代码也很简洁。原帖出处不详,网上到处是,我做了点修改名称:sscanf() - 从一个字符串中读进与指定格式相符的数据.函数原型:Int sscanf( string str, string fmt, mixed var1, mixed var2 ... );int scanf( const char *format [,argument]... );说明:sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者以固定字符串为输入 阅读全文
posted @ 2011-05-05 15:14 hnrainll 阅读(16333) 评论(0) 推荐(0) 编辑
摘要: 转自:http://blogold.chinaunix.net/u1/48325/showart_413841.html·Linux网络编程基础(一)·Linux网络编程基础(二)·Linux网络编程基础(三)• Linux网络编程一步一步学-简单客户端编写• Linux网络编程一步一步学-绑定IP和端口• Linux网络编程一步一步学-循环读取服务器上的数据• Linux网络编程一步一步学-设置非阻塞方式• Linux网络编程一步一步学-开启网络监听服务• Linux网络编程一步一步学-接受客户端连接请求• Linux网络编程一步一步学-向客户端发送消息• Li 阅读全文
posted @ 2011-05-04 21:56 hnrainll 阅读(872) 评论(0) 推荐(0) 编辑
摘要: Linux下这2个IP地址转换函数,可以在将IP地址在“点分十进制”和“整数”之间转换 而且,inet_pton和inet_ntop这2个函数能够处理ipv4和ipv6。算是比较新的函数了。 inet_pton函数原型如下[将“点分十进制” -> “整数”] #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> int inet_pton(int af, const char *src, void *dst); 这个函数转换字符串到网络地址,第一个参数af是地址族,转 阅读全文
posted @ 2011-05-04 21:44 hnrainll 阅读(5573) 评论(0) 推荐(0) 编辑
摘要: 转自:http://blog.csdn.net/lovelirui/archive/2011/04/08/6309985.aspx1.套接口的地址结构确保了进程与内核之间的通讯2.套接口的地址结构中保存地址值的是二进制,inet_pton ,inet_ntop 函数用于地址的文本表达式和二进制之间的转换3.每个协议族都有自己的地址结构 以sockaddr_开头,后面加协议族后缀,网际协议族的地址结构sockaddr_in4.结构不参与通讯5.进程到内核的函数,内核到进程的函数6.字节排序函数来由:不同系统字节排序方式不一样,大端或小端,套接口地址结构中某些成员按网络字节序维护,所以需要转换ht 阅读全文
posted @ 2011-05-04 21:34 hnrainll 阅读(452) 评论(0) 推荐(0) 编辑
摘要: 1.uCos-II操作系统内核的主要工作就是对任务进行管理和调度. 在应用程序设计的角度来看,uCos-II的任务就是一个线程.2.从任务的存储结构来看,uCOS-II的任务由三个部分组成: 1-任务程序代码(任务的执行部分). 2-任务堆栈(用于保存任务工作环境) 3-任务控制块(用于保存任务属性 阅读全文
posted @ 2011-05-04 21:25 hnrainll 阅读(4425) 评论(0) 推荐(1) 编辑
摘要: uC/OS是一种体积小巧而实用的实时操作系统,由于其代码的开放性,近年来普遍受到人们的关注,许多人开始从事这一操作系统的学习及应用工作,但由于其文档较少,特别是关于安装和使用方面的指导性文章不够充足,使很多初学者,特别是刚刚接触嵌入式操作系统的朋友们不知道如何进行系统的安装及调试,为此我结合自己使用 阅读全文
posted @ 2011-05-04 21:03 hnrainll 阅读(4309) 评论(1) 推荐(0) 编辑
摘要: 学习一种的新的东西,观看书或看论坛可不行。最主要的还是要亲自去动手体会。学习 os-ii也不例外,Jean J.Labrosse在其《嵌入式实时操作系统 /OS-II》一书中提到用Borland C/C++ 4.5x编译器对源代码中提供的例程进行调试。《嵌入式实时操作系统 /OS-II》中例程是在P 阅读全文
posted @ 2011-05-04 21:02 hnrainll 阅读(2930) 评论(2) 推荐(0) 编辑
摘要: uC/OS II在pc上的移植与实现 本周的工作:将uC/OS II在pc上的移植并实现了一个例子,本身步骤并不难,但是由于使用软件年代久远(Borland C++ 4.5),整个系统在DOS下调用,故系统调试较为复杂,搜遍网上的百家之言,鲜有将问题描述得很全面的,往往只能在某一种情况下行得通,在此 阅读全文
posted @ 2011-05-04 20:22 hnrainll 阅读(3349) 评论(0) 推荐(0) 编辑
摘要: //=============================================================// 文件名称:web.c// 功能描述:HTTP Server// 维护记录:2011-05-04 V1.0// 维护成员: wenhao//=============================================================#include <stdio.h>#include <stdlib.h>#include <string.h> // bzero#include <unistd.h 阅读全文
posted @ 2011-05-04 16:45 hnrainll 阅读(1046) 评论(0) 推荐(1) 编辑
摘要: #include <stdio.h>#include <stdlib.h>#include <windows.h>char head[]="HTTP/1.1 200 OK\r\n" \ "Content-Type: text/html\r\n"\ "\r\n";int main(){ int i,j; i = sizeof(head); printf("sizeof(head) = %d\n",i); printf("strlen(head) = %d\n", 阅读全文
posted @ 2011-05-04 15:53 hnrainll 阅读(822) 评论(0) 推荐(0) 编辑
摘要: INADDR_ANY就是指定地址为0.0.0.0的地址,这个地址事实上表示不确定地址,或“所有地址”、“任意地址”。 一般来说,在各个系统中均定义成为0值。例如MontiVista Linux中在/usr/include/netinet/in.h定义为:/* Address to accept any incoming messages.*/#define INADDR_ANY ((in_addr_t) 0x00000000)一般情况下,如果你要建立网络服务器应用程序,则你要通知服务器操作系统:请在某地址 xxx.xxx.xxx.xxx上的某端口 yyyy上进行侦听,并且把侦听到的数据包发送给 阅读全文
posted @ 2011-05-03 21:49 hnrainll 阅读(1203) 评论(0) 推荐(0) 编辑
摘要: 转自:http://blogold.chinaunix.net/u/4502/showart.php?id=13488服务套和客户机的信息函数1、字节转换函数 在网络上面有着许多类型的机器,这些机器在表示数据的字节顺序是不同的, 比如i386芯片是低字节在内存地址的低端,高字节在高端,而alpha芯片却相反. 为了统一起来,在Linux下面,有专门的字节转换函数. unsigned long int htonl(unsigned long int hostlong) unsigned short int htons(unisgned short int hostshort) unsigned 阅读全文
posted @ 2011-05-03 09:04 hnrainll 阅读(546) 评论(0) 推荐(0) 编辑
摘要: 转自:http://blogold.chinaunix.net/u/4502/showart.php?id=13285初等网络函数介绍(TCP)及示例程序1、socket int socket(int domain, int type,int protocol) domain:说明我们网络程序所在的主机采用的通讯协族(AF_UNIX和AF_INET等). AF_UNIX只能够用于单一的Unix系统进程间通信,而AF_INET是针对Internet的,因而可以允许在远程 主机之间通信(当我们 man socket时发现 domain可选项是 PF_*而不是AF_*,因为glibc是posix的实 阅读全文
posted @ 2011-05-03 08:57 hnrainll 阅读(1112) 评论(1) 推荐(2) 编辑
摘要: 转自:http://blog.csdn.net/unbutun/archive/2009/05/13/4175209.aspx条件变量 使用互斥锁来实现线程间数据的共享和通信,互斥锁一个明显的缺点是它只有两种状态:锁定和非锁定。而条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补了互斥锁的不足,它常和互斥锁一起使用。使用时,条件变量被用来阻塞一个线程,当条件不满足时,线程往往解开相应的互斥锁并等待条件发生变化。一旦其它的某个线程改变了条件变量,它将通知相应的条件变量唤醒一个或多个正被此条件变量阻塞的线程。这些线程将重新锁定互斥锁并重新测试条件是否满足。一般说来,条件变量被用来进行线承间 阅读全文
posted @ 2011-05-01 19:43 hnrainll 阅读(1877) 评论(0) 推荐(0) 编辑
摘要: 转自:http://blog.csdn.net/future_fighter/archive/2009/02/13/3883415.aspx继续昨天的线程同步,条件变量(Condition Variables)是用于线程间,通信共享数据状态改变的机制。简介条件变量的创建和销毁等待条件变量唤醒等待条件变量的线程简介当线程互斥地访问一些共享的状态时,往往会有些线程需要等到这些状态改变后才应该继续执行。如:有一个共享的队列,一个线程往队列里面插入数据,另一个线程从队列中取数据,当队列为空的时候,后者应该等待队列里面有值才能取数据。而共享数据(队列)应该用mutex来保护,为了检查共享数据的状态(队列 阅读全文
posted @ 2011-05-01 19:42 hnrainll 阅读(527) 评论(0) 推荐(0) 编辑
摘要: 转自:http://blog.csdn.net/hanchaoman/archive/2009/11/12/4798784.aspx1. 相关函数 #include <pthread.h> pthread_cond_t cond = PTHREAD_COND_INITIALIZER; int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *cond_attr); int pthread_cond_signal(pthread_cond_t *cond); int pthread_cond_broadcast(p 阅读全文
posted @ 2011-05-01 19:41 hnrainll 阅读(815) 评论(0) 推荐(0) 编辑
摘要: 转自:http://blog.csdn.net/dai_weitao/archive/2007/08/22/1754964.aspx条件变量分为两部分: 条件和变量. 条件本身是由互斥量保护的. 线程在改变条件状态前先要锁住互斥量.1. 初始化: 条件变量采用的数据类型是pthread_cond_t,在使用之前必须要进行初始化, 这包括两种方式:静态: 可以把常量PTHREAD_COND_INITIALIZER给静态分配的条件变量.动态: pthread_cond_init函数, 是释放动态条件变量的内存空间之前, 要用pthread_cond_destroy对其进行清理.#include&l 阅读全文
posted @ 2011-05-01 19:40 hnrainll 阅读(375) 评论(0) 推荐(0) 编辑
上一页 1 ··· 55 56 57 58 59 60 61 62 63 ··· 71 下一页