同一程序的两个或多个实例如何在本地网络中进行通信?

同一程序的两个或多个实例如何在本地网络中进行通信?

我想创建一个程序,供本地网络中的几台计算机使用。基本上,该程序的目的是跟踪酒吧中所有被预订的桌子(比如说)。

当某个用户预订了一张桌子时,程序应该将桌子号码广播给所有其他电脑,并将桌子标记为已预订。由于所有计算机都使用相同的程序,如何才能在所有计算机之间建立通信?

我应该使用套接字来实现这一点吗?如果重要的话,所有计算机都安装了 Linux 操作系统,并且应用程序将使用 ruby​​、perl 或 php 开发。

谢谢。

答案1

由于您使用的是 Linux,因此有一个标准解决方案可以解决该问题:命名管道。命名管道是一个文件,一个进程向其中写入数据,而另一个进程在数据可用时立即从中读取数据。操作系统负责唤醒读取进程,并告诉它“有消息要告诉您”。它还负责向侦听进程提供可用的确切数据量,不多也不少。换句话说,可能有 1 个预留,也可能有 57 个预留,它们都将正确交付,您无需计算它们。

您可以通过以下命令创建一个命名管道:

mkfifo my_pipe

现在,您可以像使用其他任何文件一样使用文件 my_pipe,您可以向其中写入数据、从中读取数据、重定向到数据、向其中附加数据:

echo "This is my name" > my_pipe

grep name my_pipe

cat my_pipe | while read; do ...; done 

等等。

答案2

简短回答:TCP/IP 可让您轻松建立服务器/客户端关系。例如,服务器可以位于 192.168.0.1,所有客户端都连接到该服务器。

详细信息:如果您有 mysql 数据库或同等数据库,您可以让所有计算机都联系单个数据库来存储预订数据。如果您将其基于 Web,您可以创建一个网页,使用 php 从 apache 服务器运行。然后,您可以在所有客户端 PC 上启动 Web 浏览器,并让每个客户端每分钟刷新一次页面。鉴于此解决方案使用 apache Web 服务器,图形用户界面可以按照您想要的方式显示。所有客户端 PC 只需启动 Web 浏览器并指向 http:///tables(或其他任何内容)即可

另一个选项是创建一个 google 帐户,然后为每个桌子创建一个日历。Google 有免费且公开可用的 php api(以及其他几种语言),您可以使用它们将事件添加/管理到 google 日历。如果您需要将任何事件设为只读,您可以创建第二个 google 帐户并对第二个帐户进行只读共享。您可以在每个桌子的网络浏览器中显示只读或读/写帐户。您可以打开所有日历或仅显示该桌子的日历。(我使用 google 日历做了类似的事情来安排房间)

相关内容