2019/03/16

Solution: Socket Error 10054 in DataSnap

Bug 保護色做得太真,導致找不到它
(示意圖/翻攝自Pixabay)

使用 SQLConnection 連接 DataSnap 的開發者都知道這是一種長連接的作法。

但這個作法有個缺點,就是如果 Client 發生瞬斷情形,在獲取資料會觸發以下例外:

  • EIdSocketError 10054 : Connection reset by peer.
  • EOleException: Connection Closed Gracefully.

在網路上看到解決方式是:
設置心跳包,每分鐘進行連線一次。

這個方式可以確保連線不會被默默切斷,只是這方式卻不能避免網路異常所導致的斷線情形。

再加上異常補獲的方式就更好了。

以下便是我的範例解法:


連線異常也是連線SOP裡重要的一環,長連接系統的好壞,從這個細節就能知道了。

See also:

沒有留言:

張貼留言