簡體   English   中英

自由服務器關閉

[英]Freeling server shutdown

我目前正在嘗試使用 Freeling 設置客戶端-服務器環境。 我可以使用以下啟動命令毫無問題地運行服務器:

analyzer -f %FREELINGSHARE%\config\it.cfg --lang it --server --port 3330 --flush --inpf plain

但是,任何時候客戶端嘗試通過套接字執行分析(在 shell 和 Matlab 環境中都嘗試過)一旦完成處理此類請求,服務器就會關閉。 這是為每個客戶端請求重新啟動服務器的行為。 從文檔來看,似乎應該為每個客戶端創建一個新的進程,cit。

服務器將派生一個新進程來處理每個新客戶端,因此您可以同時為多個客戶端提供服務。

注意我使用的是 Freeling 3.1 版

經過一些測試,我得出了以下結論:

1) 我遇到了一個與 Freeling 服務器和 Windows 操作系統組合相關的錯誤。 基本上,analyzer.exe 程序不會在每個新的客戶端請求時分叉一個新進程,因為它應該是,而是使用當前進程執行分析,一旦客戶端斷開連接,就會導致終止。 這可能是由於套接字處理不當造成的,這對於不同的操作系統是不同的。

2) 前一點似乎被基於 linux 的服務器的正確行為所證實。 但是,Freeling for linux 與特定的 linux 版本相關聯,這些版本也已經過時了。 此約束是由於較新的發行版無法滿足的依賴關系。

作為結束語,在撰寫本文時,最佳解決方案似乎是使用 Freeling 庫的套接字服務器的自定義開發。

查看代碼,這似乎是默認行為。

  // if we are a forked server attending a client, and the client is done, we exit.
if (ServerMode) CloseWorker(stats);

如果您打開了 2 個客戶端並使用 1 提交了一個請求,它將在完成后關閉連接,但它仍然應該能夠接受來自第二個客戶端的請求。 您無需每次都重新啟動服務器,只需創建一個新客戶端即可。 您始終可以修改 CloseWorker 函數以根據某些條件關閉套接字以保持客戶端連接打開。

這個應用程序似乎可以接受多個客戶端,但它無法接受來自多個客戶端的多個請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM