我想知道端口监听是如何工作的。我只能想象一个总是寻找"的东西"新。但这对我来说效率非常低
如果有帮助:我的具体问题是我有两台电脑和一台服务器。第一台计算机创建数据并将其存储在服务器上。我的程序 - 我想在第二台计算机上编程 - 现在应该始终在服务器上创建时读取新文件。数据创建软件是用LabVIEW编写的,我的程序是C ++ / Qt应用程序。我的想法是在端口侦听文件或只是查看服务器文件夹的信息。 (无论如何应该存储它)
作为一个额外的问题:我是否应该深入挖掘端口侦听/理解,或者每隔 n 毫秒检查服务器文件夹中的新文件是否具有可比性?
答案 0 :(得分:0)
你有几个选择。
1)您可以在服务器上使用inotify
(see here)(但如果文件系统是通过Samba共享,可能在第二台PC上),以便在文件更改时通知您,然后再启动处理它。这适用于Linux,但您没有提及您的操作系统/平台。
2)您可以使用套接字或端口通知“第二台”计算机,要处理的服务器上有新数据。如果选择此方法,则可以使用netcat
或nc
在命令行测试它,因为它有时会被调用。它适用于Windows,并且几乎安装在所有Linux和OSX发行版上。您可以简单地让第二台计算机等待从传递文件名的套接字读取。所以你的第二台电脑会这样做:
while :
do
file=$(netcat -l 2000)
echo New file available $file
done
当有新文件时,您的服务器或第一台计算机会执行此操作:
echo filename | netcat <ip address of second computer> 2000
我选择了port = 2000,因为1024以下的端口需要特殊权限,但您可以选择任何您喜欢的端口。
在端口/套接字上等待是阻塞的,顺便说一下,不会使用太多的CPU。