简体   繁体   English

Mono中的NamedPipeServerStream

[英]NamedPipeServerStream in Mono

I am trying to convert C#.Net project into Mono. 我正在尝试将C#.Net项目转换为Mono。 NamedPipeServerStream & NamedPipeClientStream class are not supporting in Mono and throwing Unhandle exception. Monod不支持NamedPipeServerStream和NamedPipeClientStream类,并引发Unhandle异常。 Could you please help me anyone? 你能帮我一个忙吗?

Code: 码:

class Program
{
    static string _PipeName = "testPipe";
    static void Main(string[] args)
    {

        ListenForPipeServer();
    }

    static void ListenForPipeServer()
    {
        using (NamedPipeServerStream pipeServer = new NamedPipeServerStream(
                          _PipeName,
                          PipeDirection.InOut,
                          2,
                          PipeTransmissionMode.Message,
                          PipeOptions.None

                          ))
        {
            StreamReader sr = new StreamReader(pipeServer);
            StreamWriter sw = new StreamWriter(pipeServer);


            do
            {
                try
                {
                    pipeServer.WaitForConnection();
                    sw.WriteLine("Testing");
                    sw.Flush();
                    pipeServer.WaitForPipeDrain();
                    Console.WriteLine(sr.ReadLine());

                }
                catch (Exception)
                {

                    throw;
                }
                finally
                {

                    pipeServer.WaitForPipeDrain();
                    if (pipeServer.IsConnected) pipeServer.Disconnect();
                }

            } while (true);

        }
    }



}

Unhandled Exception: 未处理的异常:

System.IO.IOException: Error on creating named pipe: error code -1 System.IO.IOException:创建命名管道时出错:错误代码-1
at System.IO.Pipes.UnixNamedPipe.EnsureTargetFile (System.String name) [0x0001f] in /Users/builder/data/lanes/mono-mac-ui-refresh-2-10/2baeee2f/source/bockbuild/profiles/mono-2-10/build-root/mono-2.10.11/_build/mono-2.10.11.git/mcs/class/System.Core/System.IO.Pipes/PipeUnix.cs:131 at System.IO.Pipes.UnixNamedPipeServer..ctor (System.IO.Pipes.NamedPipeServerStream owner, System.String pipeName, Int32 maxNumberOfServerInstances, PipeTransmissionMode transmissionMode, PipeAccessRights rights, PipeOptions options, Int32 inBufferSize, Int32 outBufferSize, HandleInheritability inheritability) [0x00012] in /Users/builder/data/lanes/mono-mac-ui-refresh-2-10/2baeee2f/source/bockbuild/profiles/mono-2-10/build-root/mono-2.10.11/_build/mono-2.10.11.git/mcs/class/System.Core/System.IO.Pipes/PipeUnix.cs:265 at System.IO.Pipes.NamedPipeServerStream..ctor (System.String pipeName, PipeDirection direction, Int32 maxNumberOfServerInstances, PipeTransmissionMode transmissionMode, PipeOptions options, Int3 在/ Users / builder / data / lanes / mono-mac-ui-refresh-2-10 / 2baeee2f / source / bockbuild / profiles / mono中的System.IO.Pipes.UnixNamedPipe.EnsureTargetFile(System.String name)[0x0001f] -2-10 / build-root / mono-2.10.11 / _build / mono-2.10.11.git / mcs / class / System.Core / System.IO.Pipes / PipeUnix.cs:System.IO.Pipes上的131 .UnixNamedPipeServer..ctor(System.IO.Pipes.NamedPipeServerStream所有者,System.String pipeName,Int32 maxNumberOfServerInstances,PipeTransmissionMode transmissionMode,PipeAccessRights权限,PipeOptions选项,Int32 inBufferSize,Int32 outBufferSize,HandleInheritability可继承性)[0x00012] in / Users / builder /数据/通道/mono-mac-ui-refresh-2-10/2baeee2f/source/bockbuild/profiles/mono-2-10/build-root/mono-2.10.11/_build/mono-2.10.11.git/ mcs / class / System.Core / System.IO.Pipes / PipeUnix.cs:265,位于System.IO.Pipes.NamedPipeServerStream..ctor(System.String pipeName,PipeDirection方向,Int32 maxNumberOfServerInstances,PipeTransmissionMode transmissionMode,PipeOptions选项,Int3 2 inBufferSize, Int32 outBufferSize, System.IO.Pipes.PipeSecurity pipeSecurity, HandleInheritability inheritability, PipeAccessRights additionalAccessRights) [0x0004b] in /Users/builder/data/lanes/mono-mac-ui-refresh-2-10/2baeee2f/source/bockbuild/profiles/mono-2-10/build-root/mono-2.10.11/_build/mono-2.10.11.git/mcs/class/System.Core/System.IO.Pipes/NamedPipeServerStream.cs:100 at System.IO.Pipes.NamedPipeServerStream..ctor (System.String pipeName, PipeDirection direction, Int32 maxNumberOfServerInstances, PipeTransmissionMode transmissionMode, PipeOptions options, Int32 inBufferSize, Int32 outBufferSize, System.IO.Pipes.PipeSecurity pipeSecurity, HandleInheritability inheritability) [0x00000] in :0 at System.IO.Pipes.NamedPipeServerStream..ctor (System.String pipeName, PipeDirection direction, Int32 maxNumberOfServerInstances, PipeTransmissionMode transmissionMode, PipeOptions options, Int32 inBufferSize, Int32 outBufferSize, System.IO.Pipes.PipeSecurity pipeSecurity) [0x00000] in :0 在/ Users / builder / data / lanes / mono-mac-ui-refresh-2-10 / 2baeee2f / source /中的2 inBufferSize,Int32 outBufferSize,System.IO.Pipes.PipeSecurity pipeSecurity,HandleInheritability继承性,PipeAccessRights AdditionalAccessRights)[0x0004b] bockbuild / profiles / mono-2-10 / build-root / mono-2.10.11 / _build / mono-2.10.11.git / mcs / class / System.Core / System.IO.Pipes / NamedPipeServerStream.cs:100在System.IO.Pipes.NamedPipeServerStream..ctor(System.String pipeName,PipeDirection方向,Int32 maxNumberOfServerInstances,PipeTransmissionMode transmissionMode,PipeOptions选项,Int32 inBufferSize,Int32 outBufferSize,System.IO.Pipes.PipeSecurity pipeSecurity,HandleInheritability继承性)[0x00000] in在System.IO.Pipes.NamedPipeServerStream..ctor处为:0(System.String pipeName,PipeDirection方向,Int32 maxNumberOfServerInstances,PipeTransmissionMode transmissionMode,PipeOptions选项,Int32 inBufferSize,Int32 outBufferSize,System.IO.Pipes.PipeSecurity pipeSecurity)[0x00000] in 0: at System.IO.Pipes.NamedPipeServerStream..ctor (System.String pipeName, PipeDirection direction, Int32 maxNumberOfServerInstances, PipeTransmissionMode transmissionMode, PipeOptions options, Int32 inBufferSize, Int32 outBufferSize) [0x00000] in :0 at System.IO.Pipes.NamedPipeServerStream..ctor (System.String pipeName, PipeDirection direction, Int32 maxNumberOfServerInstances, PipeTransmissionMode transmissionMode, PipeOptions options) [0x00000] in :0 at (wrapper remoting-invoke-with-check) System.IO.Pipes.NamedPipeServerStream:.ctor (string,System.IO.Pipes.PipeDirection,int,System.IO.Pipes.PipeTransmissionMode,System.IO.Pipes.PipeOptions) at ConsoleTestPipeApp1.Program.ListenForPipeServer () [0x00000] in /Users/Vadivelu/Project/Service_Test/ConsoleTestPipeApp1/ConsoleTestPipeApp1/Program.cs:21 at ConsoleTestPipeApp1.Program.Main (System.String[] args) [0x00000] in /Users/Vadivelu/Project/Service_Test/ConsoleTestPipeApp1/ConsoleTestPipeApp1/Program.cs:16 [ERROR] FATAL UNHANDLED EXCEPTI 在System.IO.Pipes.NamedPipeServerStream..ctor(System.String pipeName,PipeDirection方向,Int32 maxNumberOfServerInstances,PipeTransmissionMode transmissionMode,PipeOptions选项,Int32 inBufferSize,Int32 outBufferSize)处,位于System.IO.Pipes.NamedPipeServerStream的:0中。 .ctor(System.String pipeName,PipeDirection方向,Int32 maxNumberOfServerInstances,PipeTransmissionMode transmissionMode,PipeOptions选项)[0x00000]位于:0处(包装带检查调用)System.IO.Pipes.NamedPipeServerStream:.ctor(字符串, / Users / Vadivelu / Project / Service_Test / ConsoleTestPipeApp1 / ConsoleTestPipeApp1中的ConsoleTestPipeApp1.Program.ListenForPipeServer()[0x00000]处的System.IO.Pipes.PipeDirection,int,System.IO.Pipes.PipeTransmissionMode,System.IO.Pipes.PipeOptions) /Users/Vadivelu/Project/Service_Test/ConsoleTestPipeApp1/ConsoleTestPipeApp1/Program.cs中的ConsoleTestPipeApp1.Program.Main(System.String [] args)[0x00000]上的/Program.cs:21:[[ERROR] FAULT UNHANDLED EXCEPTI ON: System.IO.IOException: Error on creating named pipe: error code -1 at System.IO.Pipes.UnixNamedPipe.EnsureTargetFile (System.String name) [0x0001f] in /Users/builder/data/lanes/mono-mac-ui-refresh-2-10/2baeee2f/source/bockbuild/profiles/mono-2-10/build-root/mono-2.10.11/_build/mono-2.10.11.git/mcs/class/System.Core/System.IO.Pipes/PipeUnix.cs:131 at System.IO.Pipes.UnixNamedPipeServer..ctor (System.IO.Pipes.NamedPipeServerStream owner, System.String pipeName, Int32 maxNumberOfServerInstances, PipeTransmissionMode transmissionMode, PipeAccessRights rights, PipeOptions options, Int32 inBufferSize, Int32 outBufferSize, HandleInheritability inheritability) [0x00012] in /Users/builder/data/lanes/mono-mac-ui-refresh-2-10/2baeee2f/source/bockbuild/profiles/mono-2-10/build-root/mono-2.10.11/_build/mono-2.10.11.git/mcs/class/System.Core/System.IO.Pipes/PipeUnix.cs:265 at System.IO.Pipes.NamedPipeServerStream..ctor (System.String pipeName, PipeDirection direction, Int32 maxNumberOfServerInst ON:System.IO.IOException:创建命名管道时出错:/ Users / builder / data / lanes / mono-mac中的System.IO.Pipes.UnixNamedPipe.EnsureTargetFile(System.String name)[0x0001f]处的错误代码-1 -ui-refresh-2-10 / 2baeee2f / source / bockbuild / profiles / mono-2-10 / build-root / mono-2.10.11 / _build / mono-2.10.11.git / mcs / class / System.Core /System.IO.Pipes/PipeUnix.cs:131,位于System.IO.Pipes.UnixNamedPipeServer..ctor(System.IO.Pipes.NamedPipeServerStream所有者,System.String pipeName,Int32 maxNumberOfServerInstances,PipeTransmissionMode transmissionMode,PipeAccessRights权限,PipeOptions选项, / Users / builder / data / lanes / mono-mac-ui-refresh-2-10 / 2baeee2f / source / bockbuild / profiles / mono-2-10 / build-中的Int32 inBufferSize,Int32 outBufferSize,HandleInheritability继承性[0x00012]在System.IO.Pipes.NamedPipeServerStream..ctor上的root / mono-2.10.11 / _build / mono-2.10.11.git / mcs / class / System.Core / System.IO.Pipes / PipeUnix.cs:265 .String pipeName,PipeDirection方向,Int32 maxNumberOfServerInst ances, PipeTransmissionMode transmissionMode, PipeOptions options, Int32 inBufferSize, Int32 outBufferSize, System.IO.Pipes.PipeSecurity pipeSecurity, HandleInheritability inheritability, PipeAccessRights additionalAccessRights) [0x0004b] in /Users/builder/data/lanes/mono-mac-ui-refresh-2-10/2baeee2f/source/bockbuild/profiles/mono-2-10/build-root/mono-2.10.11/_build/mono-2.10.11.git/mcs/class/System.Core/System.IO.Pipes/NamedPipeServerStream.cs:100 at System.IO.Pipes.NamedPipeServerStream..ctor (System.String pipeName, PipeDirection direction, Int32 maxNumberOfServerInstances, PipeTransmissionMode transmissionMode, PipeOptions options, Int32 inBufferSize, Int32 outBufferSize, System.IO.Pipes.PipeSecurity pipeSecurity, HandleInheritability inheritability) [0x00000] in :0 at System.IO.Pipes.NamedPipeServerStream..ctor (System.String pipeName, PipeDirection direction, Int32 maxNumberOfServerInstances, PipeTransmissionMode transmissionMode, PipeOptions options, Int32 inBufferSize, Int32 ou ances,PipeTransmissionMode transmissionMode,PipeOptions选项,Int32 inBufferSize,Int32 outBufferSize,System.IO.Pipes.PipeSecurity pipeSecurity,HandleInheritability继承性,PipeAccessRights AdditionalAccessRights)[0x0004b]位于/ Users / builder / data / lanes / mono-mac-ui-refresh- 2-10 / 2baeee2f / source / bockbuild / profiles / mono-2-10 / build-root / mono-2.10.11 / _build / mono-2.10.11.git / mcs / class / System.Core / System.IO。位于System.IO.Pipes.NamedPipeServerStream..ctor处的Pipes / NamedPipeServerStream.cs:100(System.String pipeName,PipeDirection方向,Int32 maxNumberOfServerInstances,PipeTransmissionMode transmissionMode,PipeOptions选项,Int32 inBufferSize,Int32 outBufferSize,System.IO.Pipes.PipeSecurity pipeSecurity ,HandleInheritability继承性[0x00000]在System.IO.Pipes.NamedPipeServerStream..ctor的:0处(System.String pipeName,PipeDirection方向,Int32 maxNumberOfServerInstances,PipeTransmissionMode transmissionMode,PipeOptions选项,Int32 inBufferSize,Int32 ou) tBufferSize, System.IO.Pipes.PipeSecurity pipeSecurity) [0x00000] in :0 at System.IO.Pipes.NamedPipeServerStream..ctor (System.String pipeName, PipeDirection direction, Int32 maxNumberOfServerInstances, PipeTransmissionMode transmissionMode, PipeOptions options, Int32 inBufferSize, Int32 outBufferSize) [0x00000] in :0 at System.IO.Pipes.NamedPipeServerStream..ctor (System.String pipeName, PipeDirection direction, Int32 maxNumberOfServerInstances, PipeTransmissionMode transmissionMode, PipeOptions options) [0x00000] in :0 at (wrapper remoting-invoke-with-check) System.IO.Pipes.NamedPipeServerStream:.ctor (string,System.IO.Pipes.PipeDirection,int,System.IO.Pipes.PipeTransmissionMode,System.IO.Pipes.PipeOptions) at ConsoleTestPipeApp1.Program.ListenForPipeServer () [0x00000] in /Users/Vadivelu/Project/Service_Test/ConsoleTestPipeApp1/ConsoleTestPipeApp1/Program.cs:21 at ConsoleTestPipeApp1.Program.Main (System.String[] args) [0x00000] in /Users/Vadivelu/Project/Service_Test/ConsoleTestPip tBufferSize,System.IO.Pipes.PipeSecurity pipeSecurity)[0x00000]在System.IO.Pipes.NamedPipeServerStream..ctor处为0(System.String pipeName,PipeDirection方向,Int32 maxNumberOfServerInstances,PipeTransmissionMode transmissionMode,PipeOptions选项,Int32 inBufferSize,Int32 outBufferSize)[0x00000]在System.IO.Pipes.NamedPipeServerStream..ctor处为0(System.String pipeName,PipeDirection方向,Int32 maxNumberOfServerInstances,PipeTransmissionMode transmissionMode,PipeOptions选项)[0x00000]在:0处(包装器远程调用-带有检查)System.IO.Pipes.NamedPipeServerStream:.ctor(在ConsoleTestPipeApp1.Program.ListenForPipeServer(string,System.IO.Pipes.PipeDirection,int,System.IO.Pipes.PipeTransmissionMode,System.IO.Pipes.PipeOptions)( )/Users/Vadivelu/Project/Service_Test/ConsoleTestPipeApp1/ConsoleTestPipeApp1/Program.cs:21中的[0x00000],位于/ Users / Vadivelu / Project / Service_Test /中的ConsoleTestPipeApp1.Program.Main(System.String [] args)[0x00000] ConsoleTestPip eApp1/ConsoleTestPipeApp1/Program.cs:16 eApp1 / ConsoleTestPipeApp1 / Program.cs:16

The only problem is that the pipe named "testPipe" that you are using does not exist when the C# code is accessing the pipe. 唯一的问题是,当C#代码访问管道时,您正在使用的名为“ testPipe”的管道不存在。 If you first run the command mkfifo testPipe (on unix) and then run the following C# code, it should work. 如果您首先运行命令mkfifo testPipe (在Unix上),然后运行以下C#代码,则它应该可以工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM