Windows 命名管道2

Windows 命名管道 - 服务器端


以下代码为DLL库中的单元文件。


服务器代码:

UnmpSrv.pas
(*-------------------------------------------------------------------------- Delphi菜鸟XiaoBin 2006.5.31于黑龙江草甸子 http://blog.csdn.net/xiaobin_hlj80 veic_2005@163.com --------------------------------------------------------------------------*) // 2006.12.22 // xiaobin unit UnmpSrv; interface uses Windows; const PIPE_BUF_SIZE = 254; PIPE_TIMEOUT = 120000; var m_hOutPipe: THandle; function CreateNamedPipeServer: DWORD; stdcall; implementation function CreateNamedPipeServer: DWORD; begin //create server->client m_hOutPipe := CreateNamedPipe('\\.\pipe\xiaobin', PIPE_ACCESS_OUTBOUND, PIPE_TYPE_MESSAGE, 5, PIPE_BUF_SIZE, 0, PIPE_TIMEOUT, nil); if ((m_hOutPipe = 0)or(m_hOutPipe = INVALID_HANDLE_VALUE))then begin CloseHandle(m_hOutPipe); Result := 0; end; if ConnectNamedPipe(m_hOutPipe, nil) = true then begin if GetLastError = ERROR_PIPE_NOT_CONNECTED then begin Result := 0; end; end else begin CloseHandle(m_hOutPipe); Result := 0; end; Result := m_hOutPipe; end; end.


首先,CreateNamedPipe函数在API中的定义如下:

HANDLE WINAPI CreateNamedPipe(
  __inLPCTSTR lpName,
  __inDWORD dwOpenMode,
  __inDWORD dwPipeMode,
  __inDWORD nMaxInstances,
  __inDWORD nOutBufferSize,
  __inDWORD nInBufferSize,
  __inDWORD nDefaultTimeOut,
  __in_optLPSECURITY_ATTRIBUTES lpSecurityAttributes
);

参数:

lpName: 管道名称;

dwOpenMode: 打开模式; 有三种模式:双向(server <-> client)、单向1(server <- client)、单向2(server -> client )

dwPipeMode: 管道的数据流模式; 有两种:PIPE_TYPE_BYTE和PIPE_TYPE_MESSAGE。使用字符串多一些的时候建议使用Message模式。

nMaxInstances: 可以连接的客户端数量;范围为1~255。

nOutBufferSize: 缓冲输出大小;

nInBufferSize: 缓冲输入大小;因为使用单向,所以设为0;

nDefaultTimeOut: 超时设定;单位为毫秒。

最后一个参数为可选。设为空。


如果实例值等于0或者无效,则关闭句柄,并返回0;

test命名管道,如果存在,是否存在错误,不存在关闭句柄,并返回0;


返回实例句柄,以供调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值