1

我目前正在尝试使用 Freeling 设置客户端-服务器环境。我可以使用以下启动命令毫无问题地运行服务器:

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

但是,任何时候客户端尝试通过套接字执行分析(在 shell 和 Matlab 环境中都尝试过),一旦完成处理此类请求,服务器就会关闭。这是强制为每个客户端请求重新启动服务器的行为。从文档来看,似乎应该为每个客户分叉一个新进程,cit。

服务器将派生一个新进程来处理每个新客户端,因此您可以同时为多个客户端提供服务。

注意我使用的是 Freeling 3.1 版

4

2 回答 2

0

经过一些测试,我得出以下结论:

1) 我遇到了一个与 Freeling 服务器和 Windows 操作系统组合相关的错误。基本上,analyzer.exe 程序不会在每个新的客户端请求时分叉一个新进程,而是使用当前进程执行分析,从而在客户端断开连接时立即终止。这可能是由于套接字处理不当造成的,对于不同的操作系统来说是不同的。

2) 基于 linux 的服务器的正确行为似乎证实了前一点。然而,Linux 的 Freeling 与特定的 linux 版本相关联,这些版本也已经过时了。此约束是由于较新的发行版无法满足的依赖关系。

作为结束语,在撰写本文时,最好的解决方案似乎是定制开发使用 Freeling 库的套接字服务器。

于 2015-06-30T07:46:29.117 回答
0

查看代码,这似乎是默认行为。

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

如果您有 2 个客户端打开并使用 1 提交请求,它将在完成后关闭连接,但它仍然应该能够接受来自第二个客户端的请求。您可以创建一个新客户端,而不是每次都重新启动服务器。您始终可以修改 CloseWorker 函数以根据某些条件关闭套接字以保持客户端连接打开。

该应用程序似乎可以接受多个客户端,但无法接受来自多个客户端的多个请求。

于 2015-10-25T21:03:16.713 回答