命名的Pipe客户端(ACE,ACE_SPIPE_CONNECTOR)无法连接到CSHARP(名为PipeserverS

Named pipe client (ACE, ACE_SPIPE_Connector) could not connect to csharp (NamedPipeServerStream) server

本文关键字:ACE PipeserverS 连接 名为 CSHARP SPIPE Pipe 客户端 CONNECTOR      更新时间:2023-10-16

我在将C 客户端与ACE_SPIPE_CONNECTOR(ACE)连接到.NET服务器时遇到了问题。虽然对地址的回声进行测试 pipe pipename有效,但我怀疑使用ACE库的C 代码问题。

这是.NET服务器代码:

var server = new NamedPipeServerStream("acepipe");
server.WaitForConnection();
StreamReader reader = new StreamReader(server);
var line = reader.ReadLine();
Console.WriteLine(line);

这是C 客户端代码:

#if defined (ACE_WIN32)
#define MAKE_PIPE_NAME(X) ACE_TEXT ("\\.\pipe\") ACE_TEXT (X)
#else
#define MAKE_PIPE_NAME(X) ACE_TEXT (X)
#endif
const ACE_TCHAR *rendezvous = MAKE_PIPE_NAME("acepipe");
ACE_SPIPE_Stream cli_stream;
ACE_SPIPE_Connector con;
int i;
if (con.connect(cli_stream,
    ACE_SPIPE_Addr(rendezvous)) == -1)
{
    printf("Named pipe connect failed.n%sn", rendezvous);
    return 0;
}

我不知道这里有什么问题。

有帮助吗?

谢谢,Lothar

同时,我发现了代码的问题。两个点或问题:

1。)命名的管名自我不同。

2。)模式(消息与字节)。ACE默认为消息,C#没有。

以下C#代码解决了问题:

var server = new NamedPipeServerStream("acepipe", PipeDirection.InOut, 4, PipeTransmissionMode.Message);
server.WaitForConnection();