Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何获取Synapse中客户端和连接/断开连接事件的数量?_Delphi_Sockets_Tcp_Indy_Synapse - Fatal编程技术网

Delphi 如何获取Synapse中客户端和连接/断开连接事件的数量?

Delphi 如何获取Synapse中客户端和连接/断开连接事件的数量?,delphi,sockets,tcp,indy,synapse,Delphi,Sockets,Tcp,Indy,Synapse,我尝试使用Synapse(TTCPBlockSocket)而不是Indy,但是通过官方帮助和演示,我无法理解如何获取TCP客户端的数量,并且我没有找到有关Synapse的连接/断开连接事件,请给我一些提示或示例代码。 提前谢谢 正如TLama在评论中所指出的,每个传入连接都会使用HR\u Accept触发OnStatus事件。如果我查看TBlockSocket源,每个断开连接(无论是通过协议还是错误)都应该在连接套接字上触发带有HR\u SocketClose原因的OnStatus事件。在服务器

我尝试使用Synapse(TTCPBlockSocket)而不是Indy,但是通过官方帮助和演示,我无法理解如何获取TCP客户端的数量,并且我没有找到有关Synapse的连接/断开连接事件,请给我一些提示或示例代码。
提前谢谢

正如TLama在评论中所指出的,每个传入连接都会使用
HR\u Accept
触发OnStatus事件。如果我查看TBlockSocket源,每个断开连接(无论是通过协议还是错误)都应该在连接套接字上触发带有
HR\u SocketClose
原因的OnStatus事件。

在服务器端,您接受的每个连接都应该触发带有原因的事件。但是,对于断开连接或当前客户端计数,我找不到任何属性或事件,因为每个客户端都应作为单独的线程运行。要检测客户端断开连接,数据交换协议应提供“再见!”m“退出”或“断开连接”消息。如果协议允许,服务器还可以向客户端发送心跳消息。这不是一个直接的答案,但您可以尝试ICS(TWSocket和TWSocketServer),并提供许多示例,主要是一个TCPServer,您可以在其中看到已连接客户端的数量以及连接新客户端时的信息。什么是“客户端数量”?您想要服务器的IP地址,还是到服务器的连接数?@StijnSanders,我想要获得连接数。:)老实说,我已经有一段时间没有使用synapse了,在使用Indy和synapse之后,我已经切换回Delphi自己的TTcpClient/TTcpServer的阻塞模式和我自己的线程管理,请参见这里的示例:+1,只有在接受传入连接时才会得到的
OnStatus
事件和
HR\u Accept
原因。但你仍然可以拒绝。因此,如果您需要得到有关传入连接的通知,您将在侦听套接字线程上下文中得到它。