上一页 1 ··· 4 5 6 7 8 9 下一页
摘要: 搭建环境 虚拟机:VMware-workstation-full-8.0.3-703057.zip linux版本:CentOS-5.4-i386-bin-DVD.iso一,VM,CentOS安装 略....二,centos基本配置 1,安装vim yum -y install vim-enhanced 2,配置vim显示行号 如果是用的普通用户的话在home目录下建一个.vimrc文件(记着,原来没有,要新创一个文件)里面加一行setnu如果你想对所有用户都这样,那么在/etc/vimrc文件中加入这一行。/etc/vimrc是所有用户启动vim时都会执行的。每个用户的home目录下的... 阅读全文
posted @ 2012-12-01 15:38 孤火 阅读(547) 评论(0) 推荐(0) 编辑
摘要: 介绍这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用。通过阅读这篇文章读者应该能够有效地使用vector容器,而且应该不会再去使用C类型的动态数组了。Vector总览vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。为了可以使用vector,必须在 阅读全文
posted @ 2012-11-30 17:42 孤火 阅读(141) 评论(0) 推荐(0) 编辑
摘要: Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处。下面举例说明什么是一对一的数据映射。比如一个班级中,每个学生的学号跟他的姓名就存在着一一映射的关系,这个模型用map可能轻易描述,很明显学号用int描述,姓名用字符串描述(本篇文章中不用ch 阅读全文
posted @ 2012-11-30 13:17 孤火 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define __FD_SETSIZE 1024表示select最多同时监听1024个fd,当然,可以通过修改头文件再重编译内核来扩大这个数目,但这似乎并不治本。epoll的接口非常简单,一共就三个函数:1. int epol 阅读全文
posted @ 2012-11-23 15:45 孤火 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 用百度搜索一下“Linux 线程池”,很出现很多个结果,有的提供的源程序是可以使用的,但仔细分析后,发现其设计结构的并不太合理。线程池的设计有两个难点。1、在池中线程完成一 个任务后自动阻塞,并等待被唤醒。2、池中的空闲线程数会随着任务的多少而有一个动态的变化,如任务多而空闲线程过少时,程序会创建新的线程来补充;当任务少而空闲线程过多时,程序会取消一些空闲线程以节约系统资源。Linux系统的一个进程最多支持2024个线程。一些网络服务器在单位时间内需要处理大量的连接请求,但服务的时间去很短。使用普通的方法,即接收一个服务请求,创建一个服务线程方法来提供服务,会浪费系统很多资源。因为线程的创建和 阅读全文
posted @ 2012-11-09 10:16 孤火 阅读(408) 评论(0) 推荐(0) 编辑
摘要: 什么时候需要创建线程池呢?简单的说,如果一个应用需要频繁的创建和销毁线程,而任务执行的时间又非常短,这样线程创建和销毁的带来的开销就不容忽视,这时也是线程池该出场的机会了。如果线程创建和销毁时间相比任务执行时间可以忽略不计,则没有必要使用线程池了。 下面是Linux系统下用C语言创建的一个线程池。线程池会维护一个任务链表(每个CThread_worker结构就是一个任务)。 pool_init()函数预先创建好max_thread_num个线程,每个线程执thread_routine ()函数。该函数中while (pool->cur_queue_size == 0){ pthr... 阅读全文
posted @ 2012-11-08 17:25 孤火 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 一、TCP数据包格式首部格式:http://en.wikipedia.org/wiki/Transmission_Control_Protocol建立和关闭连接时,SYN和FIN需要占一个序列号,其它的纯ACK不占序列号。伪首部计算:http://www.tcpipguide.com/free/t_TCPChecksumCalculationandtheTCPPseudoHeader-2.htmTCP协议:http://www.networksorcery.com/enp/protocol/tcp.htm选项:用来传递附加信息给终点。二、流量控制与可变窗口三、TCP建立连接和关闭的三次握手1. 阅读全文
posted @ 2012-11-06 23:48 孤火 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 相关函数accept(接受socket连线)socket,bind,listen,connect表头文件#include#include定义函数int accept(int s,struct sockaddr * addr,int * addrlen);函数说明accept() 用来接受参数s的socket连线。参数s的socket必需先经bind()、listen()函数处理过,当有连线进来时accept()会返回一个 新的socket处理代码,往后的数据传送与读取就是经由新的socket处理,而原来参数s的socket能继续使用accept()来接受新的连线要 求。连线成功时,参数addr 阅读全文
posted @ 2012-11-06 23:04 孤火 阅读(330) 评论(0) 推荐(0) 编辑
摘要: 作一个tcp的服务程序,同时可能有大量的客户端连上来,希望分别记住各个socket谁有数据过来,就读出来,放到一个请求队列--这些事情用一个线程 完成另外有一个结果队列,如果结果里包含了socket的编号,用一个线程专门:取出来按编号找回原来发送者socket,发回给原来的客户端还有一个就是处理线程(池),它取出请求队列里的一个请求,进行处理,把处理结果放入结果队列不知道有没有现成的框架?网上只找到一些很。。。的:http://fanqiang.chinaunix.net/a4/b7/20010508/112359.htmlLinux网络编程--9. 服务器模型http://linuxc.51 阅读全文
posted @ 2012-11-04 00:41 孤火 阅读(1037) 评论(0) 推荐(0) 编辑
摘要: 休眠(被阻塞)的进程处于一个特殊的不可执行状态。这点非 常重要,否则,没有这种特殊状态的话,调度程序就可能选出一个本不愿意被执行的进程,更糟糕的是,休眠就必须以轮询的方式实现了。进程休眠有各种原因,但 肯定都是为了等待一些事件。事件可能是一段时间、从文件I/O读更多数据,或者是某个硬件事件。一个进程还有可能在尝试获得一个已经占用的内核信号量时被 迫进入休眠。休眠的一个常见原因就是文件I/O -- 如进程对一个文件执行了read()操作,而这需要从磁盘里读取。还有,进程在获取键盘输入的时候也需要等待。无论哪种情况,内核的操作都相同:进程把它 自己标记成休眠状态,把自己从可执行队列移出,放入等待队 阅读全文
posted @ 2012-11-02 11:50 孤火 阅读(776) 评论(0) 推荐(0) 编辑
摘要: 信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。 信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程控制的一部分。 一、信号的基本概念 本节先介绍信号的一些基本概念,然后给出一些基本的信号类型和信号对应的事件。基本概念对于理解和使用信号,对于理解信号机制都... 阅读全文
posted @ 2012-11-02 09:44 孤火 阅读(100) 评论(0) 推荐(0) 编辑
摘要: #include <stdio.h>#include <errno.h>#include <stdlib.h>#include <unistd.h>#include <signal.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <string.h>#include <sys/types.h>#include <sys/select.h>#include 阅读全文
posted @ 2012-11-01 16:20 孤火 阅读(188) 评论(0) 推荐(0) 编辑
摘要: #include <stdio.h>#include <errno.h>#include <stdlib.h>#include <unistd.h>#include <signal.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <string.h>#include <sys/types.h>#include <sys/select.h>#define S 阅读全文
posted @ 2012-11-01 16:19 孤火 阅读(161) 评论(0) 推荐(0) 编辑
摘要: #include <stdio.h>#include <unistd.h>#include <fcntl.h>#include <time.h>#include <sys/time.h>#include <errno.h>#include <stdlib.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <string.h>#include <sys/ 阅读全文
posted @ 2012-11-01 16:18 孤火 阅读(182) 评论(0) 推荐(0) 编辑
摘要: #include <stdio.h>#include <errno.h>#include <stdlib.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <string.h>#include <sys/types.h>#include <sys/select.h>#define SERV_ADDR "127.0.0.1"#define SERV_PORT 53 阅读全文
posted @ 2012-11-01 16:17 孤火 阅读(152) 评论(0) 推荐(0) 编辑
摘要: /************************ * client ************************/#include <stdio.h>#include <errno.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <string.h>#define SERV_ADDR "127.0.0.1"#define SERV_PORT 5358#define BUF_LEN 1024 阅读全文
posted @ 2012-11-01 16:16 孤火 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 1、I/O复用同步I/O阻塞I/O模型非阻塞I/O模型I/O复用模型信号驱动I/O模型异步I/O模型唯一需要注意的是信号驱动I/O与异步I/O的区别,信号驱动I/O是指当描述符可读/可写了,内核通知应用程序去读/写。而异步I/O是指在应用程序收到信号时,读/写已经由完成。2、改进后的str_cli函数#include <stdio.h>#include <errno.h>#include <stdlib.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/ 阅读全文
posted @ 2012-11-01 16:11 孤火 阅读(291) 评论(0) 推荐(0) 编辑
摘要: #include <stdio.h>#include <unistd.h>#include <sys/socket.h>#include <netinet/in.h>#include <errno.h>#include <signal.h>#include <sys/wait.h>#include <sys/types.h>#include <string.h>#include <stdlib.h>#include <pthread.h>#define SERV_ 阅读全文
posted @ 2012-11-01 16:04 孤火 阅读(142) 评论(0) 推荐(0) 编辑
摘要: View Code #include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include <netinet/in.h>#include <sys/socket.h>#include <sys/types.h>#include <errno.h>#include <sys/select.h>#define BUF_LEN 1024#define SERV_PORT 5358#define FD 阅读全文
posted @ 2012-11-01 16:02 孤火 阅读(215) 评论(0) 推荐(0) 编辑
摘要: /************************ * client ************************/#include <stdio.h>#include <errno.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <string.h>#define SERV_ADDR "127.0.0.1"#define SERV_PORT 5358#define BUF_LEN 1024 阅读全文
posted @ 2012-11-01 16:01 孤火 阅读(230) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 下一页