当前位置: 首页 > 编程语言 > C#

System.IO.Exception:BrokenPipeSharing

时间:2023-04-10 18:12:38 C#

System.IO.Exception:BrokenPipe我有两个.NET应用程序通过命名管道相互通信。第一次发送一切正常,但是发送完第一条消息后,服务端再次监听,WaitForConnection()方法抛出System.IO.Exception,消息管道坏了。为什么我在这里得到这个例外?这是我第一次使用管道,但在过去使用套接字时,类似的模式对我有用。代码!服务器:使用System.IO.Pipes;staticvoidmain(){varpipe=newNamedPipeServerStream("pipename",PipeDirection.In);while(true){pipe.Listen();字符串str=新的StreamReader(管道)。读到结束();Console.Write("{0}",str);}}客户端:publicvoidsendDownPipe(stringstr){使用(varpipe=newNamedPipeClientStream(".","pipename",PipeDirection.Out)){使用(varstream=newStreamWriter(pipe)){stream.Write(海峡);}}}第一次调用sendDownPipe使服务器打印我发送的内容,但当它循环回来再次收听时,它会大便。我将发布似乎有效的代码-我很好奇,因为我从未对管道做过任何事情。我在相关命名空间中没有找到你为服务器端命名的类,所以这里是基于NamedPipeServerStream的代码。回调的原因很简单,就是懒得理两件事情。NamedPipeServerStreams=newNamedPipeServerStream("p",PipeDirection.In);动作a=回调;a.BeginInvoke(s,ar=>{},null);...privatevoidcallBack(NamedPipeServerStreampipe){while(true){pipe.WaitForConnection();StreamReadersr=newStreamReader(pipe);Console.WriteLine(sr.ReadToEnd());pipe.Disconnect();}}客户端这样做:使用(varpipe=newNamedPipeClientStream(".","p",PipeDirection.Out))stream.Write("你好");我可以在服务器运行时多次重复上面的代码块,这是不可能的。当我在客户端断开连接后从服务器调用pipe.WaitForConnection()时,问题就来了。解决方法是捕获IOException并调用pipe.Disconnect(),然后再次调用pipe.WaitForConnection():以上是C#学习教程:System.IO.Exception:Thepipelineisdamaged。分享所有内容,如果对大家有用,需要了解更多C#学习教程,希望大家多多关注—while(true){try{_pipeServer.WaitForConnection();休息;}catch(IOException){_pipeServer.Disconnect();继续;}}代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: