正在关注this sample,我可以设置nMaxInstances
。
如何知道命名管道客户端的连接数超过允许的最大数量(包括服务和客户端)?如何知道何时有最大数量的命名管道客户端连接到服务?
回答
当您达到最大并发实例数时,创建超额实例将失败。
Microsoft haven't bothered to document their error codes for CreateNamedPipe()
,所以不可能更具体。
编辑 @eryksun慷慨地提供了错误信息:ERROR_PIPE_BUSY
。这在我1989年的OS/2手册中有明确的说明,但似乎在NT项目中已经迷失了方向。
请注意,除非程序中存在错误,否则不会发生这种情况。 –
@HarryJohnston如果您将管道定义为具有* N *个实例并接收* N *个连接,并且您试图创建第N + 1个实例,则所有这些都会保持打开状态,否则会发生这种情况。无论这是'错误'还是合法的检测限制方式,都有待解释。就我个人而言,我会依靠操作系统为我计算实例,而不是试图维持自己的计数。 – EJP
尽管它没有记录,但为了完整起见,这种情况下的错误是'ERROR_PIPE_BUSY',即所有管道实例都很忙。当没有监听实例时,它和客户端的'CreateFile'错误是一样的。在NT API中,'NtCreateNamedPipeFile'系统调用返回'STATUS_INSTANCE_NOT_AVAILABLE',即已达到最大命名管道实例数。而对于客户端,'NtCreateFile'系统调用返回'STATUS_PIPE_NOT_AVAILABLE',即在监听状态下找不到命名管道的实例。 – eryksun
- 1. 命名管道:服务器端如何知道客户端已断开连接?
- 2. 您如何知道客户端何时连接到服务器?
- 3. 如何知道羽毛客户端何时连接到服务
- 4. 如何命名管道C#服务器连接到命名管道PHP客户端
- 5. 可以连接到命名管道的客户端数
- 6. 只有一个客户端可以连接到命名管道
- 7. 如何使用命名管道(C++服务器,C#客户端)
- 8. 服务器如何知道客户端仍然连接?
- 9. 命名管道C#的客户端无法连接到C++服务器
- 10. 服务器是否知道连接客户端的主机名?
- 11. 服务器客户端命名管道缓冲区大小
- 12. 命名管道客户端(ACE,ACE_SPIPE_Connector)无法连接到csharp(NamedPipeServerStream)服务器
- 13. WCF客户端无法连接到非WCF命名管道服务器
- 14. 如何使用命名管道客户端/服务器检测客户端断开连接?
- 15. RabbitMQ客户端如何知道它何时失去与服务器的连接?
- 16. 我如何知道.net web服务的最大连接数?
- 17. SQL Server客户端如何知道如何连接到实例?
- 18. 如何使用重叠I/O检测到到命名管道服务器的客户端连接?
- 19. 使用命名管道的客户端服务器聊天
- 20. 如何知道客户端何时停止ping Java服务器?
- 21. 如何知道使用bash连接到每个SSID的客户端的数量?
- 22. 如何知道连接到服务器的客户端数量并将连接的客户端数量返回给用户?
- 23. 命名管道服务器和客户端 - 无消息
- 24. 如何在客户端断开连接后使命名管道不忙?
- 25. 在让客户端知道的同时从服务器端关闭TCP连接
- 26. 如何从jdbc连接知道客户端ip端口
- 27. 服务器在客户端使用getInputStream时如何知道哪个客户端正在连接它:outputStream:?
- 28. 您如何知道套接字客户端断开连接?
- 29. Boost ASIO:服务器如何知道客户端是否仍然连接?
- 30. 如何找到有关命名管道上客户端读取的信息
我不确定你在问什么。你想知道如何检测你的服务器的最大容量?或者你是否试图在达到最大容量后增加容量?或者你究竟在问什么? –
@RemyLebeau:如何检测我的服务器何时处于最大容量?我编辑过。 –
@RemyLebeau不能是后者,因为你不能这样做。 – EJP