Fork me on GitHub
摘要: (一)安装MySQL和开发包 先安装MySQL,安装server和client……然后要安装开发包,在Ubuntu下:sudo apt-get install libMySQLclient15-dev一开始我没有安装开发包,发现怎么都找不到mysql.h和相应的库。安装好之后,编译时包含相应的头文件以及库,即可使用MySQL的API,示例:gcc -o mysqlDemo -I/usr/include/mysql -L/usr/lib -lmysqlclient main.c(二)封装一个访问MySQL的库 本来想自己封装一个库的,可是在网上发现了一个写的很不错的例子,所以自己就把那个例子.. 阅读全文
posted @ 2012-11-20 17:35 _Lei 阅读(4591) 评论(0) 推荐(0) 编辑
摘要: 守护进程,也就是通常说的Daemon进程,是Linux中的后台服 务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关 闭时终止。Linux系统有很多守护进程,大多数服务都是通过守护进程实现的,同时,守护进程还能完成许多系统任务,例如,作业规划进程crond、打印 进程lqd等(这里的结尾字母d就是Daemon的意思)。 创建守护进程(注:这些内容都是百度百科上面的……)创建子进程,父进程退出 这是编写守护进程的第一步。由于守护进程是脱离控制终端的,因此,完成第一步后就会在Shell终端里造成一程序.. 阅读全文
posted @ 2012-09-25 18:59 _Lei 阅读(666) 评论(0) 推荐(0) 编辑
摘要: 使用boost库序列化传输对象,要用到boost中的Boost.Serialization(一)编译boost并不是说要用到boost都要对boost进行编译,只有用到以下库时才需要编译,刚好我们要用Serialization,所以要进行编译The only Boost libraries that must be built separately are:Boost.FilesystemBoost.GraphParallelBoost.IOStreamsBoost.MPIBoost.ProgramOptionsBoost.Python (see the Boost.Python buil.. 阅读全文
posted @ 2012-09-24 20:23 _Lei 阅读(4652) 评论(0) 推荐(0) 编辑
摘要: 关于共享内存的操作,要用到shmget、shmat、shmctl、shmdt这几个函数,详细说明请大家查看手册 调试的时候可以使用命令ipcs,ipcs -m可以看到共享内存的情况,ipcs -s可以看到信号量的使用情况以下是我对这几个函数的封装#ifndef SHAREDMEMORY_H#define SHAREDMEMORY_H#include <sys/shm.h>#define READ_WRITE_FLAG (S_IRUSR | S_IWUSR | S_IROTH | S_IWOTH)class SharedMemory{ public: SharedMem... 阅读全文
posted @ 2012-09-18 22:35 _Lei 阅读(1243) 评论(0) 推荐(0) 编辑
摘要: 只是把以前的写的代码贴出来而已#ifndef HEAP_H#define HEAP_Hvoid HeapSort(int* a,int arraySize);void BuildHeap(int* a,int arraySize);void ShiftUp(int* a, int index);void ShiftDown(int* a,int startIndex,int endIndex);void Swap(int& x,int& y);void PrintHeap(int* a,int arraySize);#endifHeap.cpp#include "He 阅读全文
posted @ 2012-09-17 14:51 _Lei 阅读(620) 评论(0) 推荐(0) 编辑
摘要: 这篇说一下用于网络编程的两个调试工具,netstat和tcpdump(一)netstat先看一下手册NAME netstat - Print network connections, routing tables, interface statis‐ tics, masquerade connections, and multicast memberships常见参数-a (all)显示所有选项,默认不显示LISTEN相关-t (tcp)仅显示tcp相关选项-u (udp)仅显示udp相关选项-n 拒绝显示别名,能显示数字的全部转化成数字。-l 仅列出有在 Listen (监听) 的... 阅读全文
posted @ 2012-09-16 20:14 _Lei 阅读(5595) 评论(0) 推荐(0) 编辑
摘要: 这一篇给之前写的聊天室再加上文件传输: 以下是对文件操作的封装 FileOperator.h#ifndef FILEOPERATOR_H#define FILEOPERATOR_H#include <stdio.h>#define WRITE_CREATE_MODE "a+b"#include <fcntl.h>#include <string>class FileOperator{ public: FileOperator(); ~FileOperator(); bool Open(const char* fileName,const 阅读全文
posted @ 2012-09-16 01:45 _Lei 阅读(4420) 评论(0) 推荐(0) 编辑
摘要: 这一篇我们用epoll改写之前写的简单聊天室,Epoll是Linux内核为处理大批量句柄而作了改进的poll。我们要用到epoll的三个函数,分别是:int epoll_create(int size); int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event); int epoll_wait(int epfd, struct epoll_event * events, int maxevents, int timeout);下面对要用到epoll的操作进行封装... 阅读全文
posted @ 2012-09-12 14:00 _Lei 阅读(7452) 评论(4) 推荐(0) 编辑
摘要: 要用到多线程以及线程的读写锁,之前写的Socket类、ServerSocket要做相应的改变因为服务器端要维持着一个存储客户端Socket信息到数据结构,当多个线程同时访问这个结构时,要做同步处理,所以要在适当的时候加上读锁或写锁。新的ServerSocket类#ifndef SERVERSOCKET_H#define SERVERSOCKET_H#include "Socket.h"#include <list>#include <semaphore.h>#include "ThreadReadWriteLock.h"using 阅读全文
posted @ 2012-09-06 11:32 _Lei 阅读(12476) 评论(7) 推荐(1) 编辑
摘要: 上一篇写了对套接字操作的封装,这一节使用已封装好的Socket类实现服务器与客户端的通信(Socket的定义见上篇Socket.h)服务器端:ServerSocket.h#ifndef SERVERSOCKET_H#define SERVERSOCKET_H#include "Socket.h"class ServerSocket:public Socket{ public: ServerSocket(const int port); ServerSocket(); virtual ~ServerSocket(); void Acc... 阅读全文
posted @ 2012-09-04 20:56 _Lei 阅读(6783) 评论(0) 推荐(0) 编辑