我正在写一些Perl代码。我希望它能在Windows和Linux / UNIX / OSX上运行。到目前为止,它适用于* NIX并使用fifos。
我正在考虑切换到套接字以避免POSIX :: mkfifo()在Windows上不起作用的问题,所以我需要编写一些单独的代码来使用Win32 :: Pipe。
我对整件事情感到矛盾。在我看来,这两个修复都需要大约相同的工作量。切换到套接字是个好主意吗?
答案 0 :(得分:3)
简答: IO :: Socket :: INET适用于Windows和* NIX。
就个人而言,我决定改用插座。在我的应用程序中它并不重要。但我认为它使代码更简单,让我可以灵活地转移到>将来有1个客户端,我想要学习IO :: Socket。
答案 1 :(得分:2)
更一般地回答(即,它不是perl特定的):
在Windows中与世界其他地方做这种事情几乎总是需要单独的代码用于Windows与其他所有东西。几乎所有东西 - 其他都有这样的东西的好解决方案,如unix文件套接字或fifo或...然后在Windows上你必须回到套接字。
正确的做法,恕我直言,是在不是网络套接字的Windows上使用正确的解决方案,因为这会打开应用程序以解决安全问题。所以在其他一切“正确地做”但然后在Windows上,回到类似网络套接字的东西。 但是,请确保如果采用网络套接字路由,至少应该使用本地套接字(即绑定到127.0.0.1)。
对于perl,我很想在CPAN中寻找已经成为通用的类。但是......如果不存在,我不会感到惊讶。
答案 2 :(得分:2)
LWP::socket在Windows和* NIX中运行良好。如果您选择超过fifos的套接字,那么您最终将能够传达Windows和* NIX进程。可能你今天不需要它,但谁知道呢。
答案 3 :(得分:1)
IIRC,更高版本的Perl在Windows上有一个可用的socketpair。