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、付费专栏及课程。

余额充值