(Translated by https://www.hiragana.jp/)
GitHub - JelinYao/AsyncIPC: Windows上高性能异步IPC实现(基于命名管道)。A high-performance asynchronous IPC implementation on Windows (based on named pipes).
Skip to content

Windowsじょう高性能こうせいのう异步IPC实现(もと命名めいめいかんどう)。A high-performance asynchronous IPC implementation on Windows (based on named pipes).

License

Notifications You must be signed in to change notification settings

JelinYao/AsyncIPC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AsyncIPC

Windowsじょう高性能こうせいのう异步IPC实现(もと命名めいめいかんどう),支持しじ异步そうこう通信つうしんせっこう简洁使用しよう简单。 A high-performance asynchronous IPC implementation on Windows (based on named pipes),Support asynchronous two-way communication, the interface is concise and easy to use.

实现かい

异步IPCかまち提供ていきょう2套实现方あんみやこただしもと于Windowsけい统的能力のうりょくふん别是异步过程调用和重かずえ叠I/O。

1.异步过程调用(Asynchronous Procedure Calls)

MSDN:https://docs.microsoft.com/zh-cn/windows/win32/sync/asynchronous-procedure-calls

もと于异过程调用实现てき命名めいめいかんどうhttps://docs.microsoft.com/en-us/windows/win32/ipc/named-pipe-server-using-completion-routines

2.じゅう叠I/O

もと于重叠I/O实现てき命名めいめいかんどうhttps://docs.microsoft.com/en-us/windows/win32/ipc/named-pipe-server-using-overlapped-i-o

せっこうかい

1.导出せっこう

全部ぜんぶ以Cせっこう形式けいしき导出,便びん于其语言调用。

// 创建IPC实例
ASYNCIPC_API int CreateInstance(PipeImplType name, INamedPipe** pipe);
// はつはじめこころざし
ASYNCIPC_API void InitEasyLog(const char* process_name);

2.IPCせっこう

提供ていきょうIPC创建、发送消息しょうそく退出たいしゅつとうこうのう

class INamedPipe
{
public:
    virtual bool Create(const wchar_t* pipe_name, PipeType type, IPipeDelegate* delegate) = 0;
    virtual void Exit() = 0;
    virtual void Send(const char* msg) = 0;
};

3.IPCかい调接こう

はたIPC内部ないぶじょう态信いきかい调到せっ入方いりがた包括ほうかつすうすえ发送、消息しょうそく接收せっしゅう、连接じょう态等しんいき

class IPipeDelegate {
public:
    virtual void OnCreate(bool) = 0;
    virtual void OnConnected(bool) = 0;
    virtual void OnSend(int size) = 0;
    virtual void OnRecv(void* data, int size) = 0;
    virtual void OnDisconnected() = 0;
};

使用しようかい

1.serverはし

しめせれいだい参考さんこう:AsyncIPCServer项目,实现ざいAsyncIPC\AsyncIPCServer\main.cppちゅう

#define ENABLE_ASYNCPIPE
INamedPipe* pipe_server_ = nullptr;
...
PipeCallback pipe_clllback;
    PipeImplType name;
#ifdef ENABLE_ASYNCPIPE
    name = PIPE_ASYNC;
#else
    name = PIPE_OVERLAPPED;
#endif
    CreateInstance(name, &pipe_server_);
    pipe_server_->Create(kPipeName, PIPE_SERVER, &pipe_clllback);
    ...
    pipe_server_->Send(text);
    ...
    pipe_server_->Exit();

2.clientはし

しめせれいだい参考さんこう:AsyncIPCClient项目,实现ざいAsyncIPC\AsyncIPCClient\main.cppちゅう

#define ENABLE_ASYNCPIPE
INamedPipe* pipe_client_ = nullptr;
PipeCallback pipe_clllback;
    PipeImplType name;
#ifdef ENABLE_ASYNCPIPE
    name = PIPE_ASYNC;
#else
    name = PIPE_OVERLAPPED;
#endif
    CreateInstance(name, &pipe_client_);
    pipe_client_->Create(kPipeName, PIPE_CLIENT, &pipe_clllback);

// send msg
pipe_client_->Send(text);
// exit
pipe_client_->Exit();

测试截图

1.serverclient建立こんりゅう连接

2.serverclient间互しょう发送消息しょうそく

3.だん开连せっ

About

Windowsじょう高性能こうせいのう异步IPC实现(もと命名めいめいかんどう)。A high-performance asynchronous IPC implementation on Windows (based on named pipes).

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published