草庐IT

NamedPipe

全部标签

windows - 使用 NamedPipe 时,有什么方法可以检测客户端管道的句柄是否关闭?

我想知道是否有一种方法可以在Windows平台上从服务器端检测客户端管道句柄的状态。即使客户端使用CloseHandle()函数关闭了管道(断开连接),但似乎无法从服务器端检测到它。将WaitForSingleObject()与句柄对象一起使用会返回WAIT_OBJECT_0,无论客户端句柄的状态如何。那么,从服务器端以更低的成本检测客户端管道的句柄是否关闭的好的解决方案是什么? 最佳答案 如果您正在从管道(PIPE_ACCESS_INBOUND或PIPE_ACCESS_DUPLEX)读取数据,当客户端关闭其管道末端时,您将收到ER

c# - 如何在 .NET 3.5 中通过 NamedPipe 发送对象?

你能告诉我在.net3.5中通过NamedPipes发送对象的最佳方式是什么吗? 最佳答案 通过XmlSerializer序列化您的对象比senditasatext并在另一端反序列化,或者按照Remus的建议使用WCF命名管道绑定(bind) 关于c#-如何在.NET3.5中通过NamedPipe发送对象?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1185113/

c# - WCF NamedPipe CommunicationException - "The pipe has been ended. (109, 0x6d)."

我正在编写带有“状态工具”的Windows服务。该服务托管一个用于进程间通信的WCF命名管道端点。通过命名管道,状态工具可以定期查询服务的最新“状态”。在我的开发机器上,我有多个IP地址;其中之一是具有192.168.1.XX地址的“本地”网络。另一个是“企业”网络,地址为10.0.X.XX。Windows服务收集单个IP地址上的UDP多播流量。到目前为止,只要使用“192.168.1.XX”地址,Windows服务就可以正常工作。它始终如一地向客户端正确报告状态。当我切换到另一个“公司”IP地址(10.0.X.XX)并重新启动服务后,我在检索状态时收到连续的“Communicatio

c# - 少量数据中的 NamedPipe 与 TCP/IP

你好如果我们向客户端/服务器来回传递少量数据,那么tcp/ip的开销可以忽略不计并且性能与同一台机器上的NamedPipe相同,这是真的吗? 最佳答案 与其说是数据量,不如说是请求数。换句话说,如果您有100,000个连接来传递100字节的数据,那么与您有10个连接(每个连接100K)相比,您将拥有更多的tcp/ip开销。这并不是说通过tcp/ip与命名管道传输数据没有开销。有。但通常我会说,决定使用哪个系统更多地取决于系统的架构,而不是开销。如果要在物理服务器之间传输数据,则必须使用tcp/ip;命名管道不是一个选项。如果您在同一

c++ - 打破 ReadFile() 阻塞 - 命名管道 (Windows API)

为了简化,这是一个NamedPipeSERVER正在等待NamedPipeCLIENT写入管道的情况(使用WriteFile())阻塞的WindowsAPI是ReadFile()服务器已创建启用阻塞的同步管道(无重叠I/O)客户端已经连接,现在服务器正在等待一些数据。在正常的事情流程中,客户端发送一些数据,服务器处理它,然后返回到ReadFile()等待下一个数据block。同时发生事件(例如用户输入),NamedPipeSERVER现在必须执行一些其他代码,而在ReadFile()阻塞时它无法执行。此时我需要提一下,NamedPipeClient不是我的应用程序,所以我无法控制它。我

c++ - 打破 ReadFile() 阻塞 - 命名管道 (Windows API)

为了简化,这是一个NamedPipeSERVER正在等待NamedPipeCLIENT写入管道的情况(使用WriteFile())阻塞的WindowsAPI是ReadFile()服务器已创建启用阻塞的同步管道(无重叠I/O)客户端已经连接,现在服务器正在等待一些数据。在正常的事情流程中,客户端发送一些数据,服务器处理它,然后返回到ReadFile()等待下一个数据block。同时发生事件(例如用户输入),NamedPipeSERVER现在必须执行一些其他代码,而在ReadFile()阻塞时它无法执行。此时我需要提一下,NamedPipeClient不是我的应用程序,所以我无法控制它。我