我目前正在尝试用Freeling建立一个客户机-服务器环境。使用以下启动命令,我可以运行服务器而不出问题:
analyzer -f %FREELINGSHARE%\config\it.cfg --lang it --server --port 3330 --flush --inpf plain但是,每当客户端试图通过套接字(从shell和Matlab环境都尝试)执行分析时,服务器一旦完成处理此类请求就会关闭。这是强制每个客户端请求重新启动服务器的行为。从文档来看,似乎应该为每个客户端( cit )分叉一个新的流程。
服务器将发送一个新进程来处理每个新客户端,因此您可以同时为多个客户端提供服务。
注:我使用的是Freeling版本3.1
发布于 2015-06-30 07:46:29
经过一些测试,我得出以下结论:
( 1)我遇到了一个与Freeling服务器和Windows组合有关的错误。基本上,analyzer.exe程序不会在每个新的客户端请求中分叉一个新进程(应该是这样),而是对当前进程执行分析,一旦客户端断开连接,就会导致终止。这可能是由于套接字处理不当造成的,而套接字对于不同的操作系统则不同。
2)基于linux的服务器的正确行为似乎证实了前面的观点。然而,是与特定的linux版本相关联的,这也是相当过时的。此约束是由于较新的发行版无法满足的依赖关系造成的。
作为结束语,在撰写本文时,最好的解决方案似乎是使用Freeling库的套接字服务器的自定义开发。
发布于 2015-10-25 21:03:16
看一下代码,这似乎是默认的行为。
// if we are a forked server attending a client, and the client is done, we exit.
if (ServerMode) CloseWorker(stats);如果您有两个客户端打开,并提交一个请求与1,它将关闭连接时,它已完成,但它仍然能够接受来自第二个客户端的请求。与每次重新启动服务器不同,您只需创建一个新客户端即可。您始终可以根据某些条件修改CloseWorker函数以关闭套接字,以保持客户端连接处于打开状态。
该应用程序似乎可以接受多个客户端,但它无法接受来自多个客户端的多个请求。
https://stackoverflow.com/questions/31073398
复制相似问题