杂项
杂项
INGNIGHT
这个作者很懒,什么都没留下…
展开
-
发送文件
//服务器端#include#include#include#include#define ONE_PAGE 1024*4using namespace std;#pragma comment(lib,"ws2_32.lib")class FileHeader{public : void SetFileName(char *FileName) { strcpy_s原创 2015-09-08 22:12:42 · 515 阅读 · 0 评论 -
套接字
#include #include #include #include #include #include #include #include #define DEF_STD_ERROR (-1)#define DEF_BIND_PORT (12455)#ifndef TRUE#define TRUE 1#define FALSE 0#define BOOL in原创 2016-05-07 09:03:11 · 632 阅读 · 0 评论 -
消息队列
//消息队列//msg.c#include #include #include #include #include #include #include #include #include #define DEF_MAX_PATH ("./SHM")#define DEF_STD_ERROR (-1)#define DEF_MSG_SIZE (1024)enum{原创 2016-05-07 09:02:28 · 456 阅读 · 0 评论 -
共享内存
//共享内存//shm.c#include #include #include #include #include #include #include #include #include #define DEF_MAX_PATH ("./SHM")#define DEF_STD_ERROR (-1)#define DEF_SHM_SIZE (1024)int mai原创 2016-05-07 09:01:53 · 791 阅读 · 0 评论 -
信号
//信号#include #include #include #include #include void handler(int signal_num){ switch(signal_num) { case SIGINT: { print原创 2016-05-07 09:00:49 · 501 阅读 · 0 评论 -
有名管道
//命名管道特点://1.如果打开管道的一方仅以读或写的方式打开管道,必须需要另一方的介入,管道才能打开//双方都调用open//可以一方打开,以读写的方式打开open(DEF_FIFO_PATH,O_RDWR)//发送少量简单无格式的数据//双方读写都存在,才能打开管道//计时性存储数据//2.存在的文件//3.单向写入,单向写出//问答形式#include #inclu原创 2016-05-07 09:00:14 · 974 阅读 · 0 评论 -
匿名管道
//匿名管道//实现父子进程间的进程通信//发送简单少量无格式数据#include #include int main(){ pid_t child; int fd[2]; int iRead; int iWrite; //create pipe pipe(fd); //c原创 2016-05-07 08:59:21 · 709 阅读 · 0 评论 -
线程进程通信和同步方式
Windows线程间同步:原子锁(windows独有的),临界区,互斥量,信号量,事件(后面三个是内核)Windows线程间通信:全局变量,发消息(向线程发消息,向窗口发消息)Linux线程进同步:互斥锁,条件变量,信号量(POSIX标准的信号量)Linux进程间通信:管道,信号,信号量(和Linux线程的不同),共享内存,映射内存,消息队列,套接字原创 2016-05-07 08:51:38 · 431 阅读 · 0 评论 -
Linux命名管道
//命名管道特点://1.如果打开管道的一方仅以读或写的方式打开管道,必须需要另一方的介入,管道才能打开//双方都调用open//可以一方打开,以读写的方式打开open(DEF_FIFO_PATH,O_RDWR)//发送少量简单无格式的数据//双方读写都存在,才能打开管道//计时性存储数据//2.存在的文件//3.单向写入,单向写出//问答形式#include #inclu原创 2015-11-23 11:09:34 · 436 阅读 · 0 评论 -
fork创建进程
#include #include #include #include #include int main(int argc,char *argv[]){ pid_t child; int count = 100; printf("Parrent process [%d] start...\n",getpid());原创 2015-11-18 23:17:16 · 648 阅读 · 0 评论 -
双线程读写无锁队列
#pragma once#ifndef __INCLUDE__CIRCLE__QUEUEUE__#define __INCLUDE__CIRCLE__QUEUEUE__#includeconst long MAX_LEN = 10000;templateclass CCircleQueue{public : CCircleQueue(); BOOL InitQueue(in原创 2015-10-16 23:17:59 · 1190 阅读 · 0 评论 -
智能指针shared_ptr
#includeusing namespace std;templateclass my_shared_ptr{private: T * m_ptr;//保存指针public : explicit my_shared_ptr():m_ptr(NULL)//my_shared_ptr a;无参构造没有保护指针 { } explicit my_shared_ptr(T * pt原创 2015-10-15 23:28:54 · 510 阅读 · 0 评论 -
智能指针auto_ptr
#includeusing namespace std;templateclass my_auto_ptr{private: T *m_ptr;public: my_auto_ptr():m_ptr(NULL) { } my_auto_ptr(T* ptr):m_ptr(ptr) { } ~my_auto_ptr() throw() { delete m_pt原创 2015-10-14 22:14:28 · 445 阅读 · 0 评论 -
单例模板模式控制台管理机制
#pragma once#ifndef __CONTROL__H#define __CONTROL__H#includetemplateclass CControl{protected: CControl(); ~CControl(); CControl(const CControl &control); CControl & operator = (const CCon原创 2015-10-13 21:40:06 · 545 阅读 · 0 评论 -
TCP协议
一.TCP四次挥手A:B啊,我不想玩了。B:哦,你不想玩了啊,我知道了。这个时候,还只是A不想玩了,也即A不会再发送数据,但是B能不能在ACK的时候,直接关闭呢?当然不可以了,很有可能A是发完了最后的数据就准备不玩了,但是B还没做完自己的事情,还是可以发送数据的,所以称为半关闭的状态。这个时候A可以选择不再接收数据了,也可以选择最后再接收一段数据,等待B也主动关闭。B:A啊,好...原创 2019-08-22 18:09:39 · 326 阅读 · 0 评论 -
Linux网络epoll模型
#define _GNU_SOURCE 1#include #include #include #include #include #include #include #include #include #include #include #include #define DEF_STD_ERROR (-1)#define DEF_BIND_PORT (10240)原创 2016-02-20 21:12:21 · 480 阅读 · 0 评论 -
Linux 网络select模型
#include #include #include #include #include #include #include #include #include #define DEF_STD_ERROR (-1)#define DEF_BIND_PORT (12455)#ifndef TRUE#define TRUE 1#define FALSE 0#defi原创 2015-11-24 23:16:16 · 536 阅读 · 0 评论 -
Linux网络poll模型
#define _GNU_SOURCE 1#include#include #include #include #include #include #include #include #include #include #include #define DEF_STD_ERROR (-1)#define DEF_BIND_PORT (12455)#ifndef原创 2015-11-24 23:14:16 · 547 阅读 · 0 评论 -
Select网络模型
MySockt.h#pragma once#define MAXNUM 64#include#pragma comment(lib,"ws2_32.lib")#define UM_USER WM_USER+1 //向窗口发消息enum NETTYPE{ NETRECV,NETACCEPT,NETSEND};class CMySocket{public: CMySoc原创 2015-10-09 13:47:03 · 648 阅读 · 0 评论 -
异步事件模型
MyWSAEventSelect.h#pragma once#define MAX_NUM 64#define UM_USER WM_USER+1class CMyWSAEventSelect{public: CMyWSAEventSelect(void); ~CMyWSAEventSelect(void);public : bool StartSevere(HWND m_hW原创 2015-09-16 21:33:06 · 568 阅读 · 0 评论 -
异步选择模型
WSASelectSevere.h#pragma once#define UM_ACCEPT WM_USER+1#define UM_TALKING WM_USER+2#define UM_USER WM_USER+3#include"MyThread.h"class WSASelectSevere{public: WSASelectSevere(void); ~WSASele原创 2015-09-15 23:04:30 · 494 阅读 · 0 评论 -
UDP广播
服务器端#include#includeusing namespace std;#pragma comment(lib,"ws2_32.lib")int main(){ WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 2, 2 ); err = WSAStart原创 2015-09-09 22:24:17 · 418 阅读 · 0 评论 -
线程同步
线程同步:一:互斥同步 1.原子访问是windows只有的线程同步 InterlockedExchange 改变值 InterlockedIncrement ++ InterlockedDecrement -- InterlockedExchangeAdd += 实现旋转锁:锁一段代码原创 2015-08-08 14:51:16 · 1042 阅读 · 1 评论 -
线程通信
线程通信:CThreadDome文件名1.通过全局变量2.发消息 2.1给窗口发消息 #define SEND_DATA (WM_USER+1)//定义处理消息的宏 UINT _cdecl CThreadDomeThreadDlg::Tread(LPVOID lpvoid)//线程函数 { CThreadDomeDlg *pThis=(CThreadDomeD原创 2015-08-06 22:29:59 · 627 阅读 · 0 评论