我正在嘗試使用Synapse(TTCPBlockSocket)而不是Indy,但通過官方幫助和演示,我無法理解如何獲取TCP客戶端的數量,並且我沒有找到關於Synapse的連接/斷開連接事件,請給我一些提示或示例代碼。 在此先感謝!如何獲取Synapse中的客戶端數量和連接/斷開事件?
3
A
回答
2
正如TLama在評論中指出的那樣,每個傳入連接都會通過HR_Accept
觸發OnStatus事件。如果我查看TBlockSocket源,則每個斷開連接(無論是通過協議還是錯誤)都應該在連接套接字上觸發一個OnStatus事件,其原因爲HR_SocketClose
。
+0
說實話,在使用Indy和Synapse後,我一直沒有使用突觸,我已經在阻塞模式和我自己的線程管理下切換回Delphi自己的TTcpClient/TTcpServer,請參閱這裏的示例: http://xxm.svn.sf.net/viewvc/xxm/trunk/Delphi/http/xxmHttpMain.pas –
+0
+1,帶'HR_Accept'的'OnStatus'事件只有當你接受傳入的連接時纔會得到。但是你仍然可以拒絕它。因此,如果您需要收到有關傳入連接的通知,您將在偵聽套接字線程上下文中獲得它。 – TLama
相關問題
- 1. 客戶端連接/斷開qjsonrpc事件
- 2. socket.io斷開連接事件,客戶端斷開連接檢測
- 3. 客戶端斷開連接
- 4. 如何在服務器端捕獲客戶端的連接和斷開連接?
- 5. 如何在客戶端斷開連接時獲取NSNetService通知?
- 6. 獲取斷開連接的客戶端的暱稱
- 7. Bluez gatt服務器與客戶端斷開連接的事件
- 8. 如何獲得客戶端斷開連接的通知?
- 9. 當事件觸發時,Java CORBA客戶端斷開連接
- 10. 如何從客戶端斷開連接並重新連接socket.io?
- 11. Websocket客戶端斷開連接websocket4net
- 12. 處理TCP客戶端斷開連接
- 13. 「客戶端斷開連接」HttpException
- 14. PHPWebsocket客戶端立即斷開連接
- 15. socket.id斷開連接客戶端?
- 16. SignalR .NET客戶端斷開連接
- 17. 獲取連接的客戶端數
- 18. 如何識別GWT中斷開連接的客戶端?
- 19. 斷開單個客戶端的連接會斷開許多其他客戶端的連接
- 20. 重新連接斷開連接的客戶端套接字
- 21. 如何在Socket編程中處理客戶端斷開連接?
- 22. 您如何知道套接字客戶端斷開連接?
- 23. 處理WinRT StreamSocket斷開連接(服務器端和客戶端)
- 24. TCP:當客戶端連接,發送數據和斷開連接之前接受
- 25. SignalR - 如何檢測斷開連接的客戶端
- 26. 如何檢測net.CreateServer內部斷開連接的客戶端?
- 27. 我們如何檢測WCF客戶端何時斷開連接?
- 28. TcpListener:如何檢測客戶端斷開連接?
- 29. 如何在客戶端斷開連接時正確使用ctx.Done()?
- 30. 如何斷開elasticsearch-py客戶端/連接池
在服務器端,您接受的每個連接應使用['HR_Accept']觸發['OnStatus'](http://synapse.ararat.cz/doc/help/blcksock.TBlockSocket.html#OnStatus)事件] (http://synapse.ararat.cz/doc/help/blcksock.html#THookSocketReason)原因。然而,對於斷開連接或當前客戶端計數,我無法找到任何屬性或事件,因爲每個客戶端都應該作爲單獨的線程運行。 – TLama
要檢測客戶端斷開連接,數據交換協議應提供「再見!」,「退出」或「斷開連接」消息。如果協議允許,服務器還可以向客戶端發送心跳消息。 – mjn
不是直接的答案,但您可以嘗試使用很多示例的ICS(TWSocket和TWSocketServer),主要是TCPServer之一,您可以在其中看到連接的客戶端的數量以及新客戶端連接時的信息。 – philnext