如何使用 Perl 通过 TCP 和 UDP 连接到远程机器?

Posted

技术标签:

【中文标题】如何使用 Perl 通过 TCP 和 UDP 连接到远程机器?【英文标题】:How can I connect to a remote machine via TCP and UDP with Perl? 【发布时间】:2009-11-21 08:36:12 【问题描述】:

我有一个在服务器上运行的脚本,我现在希望它向我的 PC 发送消息。我想向某个端口发送 TCP 或 UDP 消息。

最好的方法是什么(教程会很棒)?

是否有一些我可以在我的 PC 上运行的客户端程序来侦听本地端口的消息?

【问题讨论】:

【参考方案1】:

客户端可以使用套接字发送 TCP 和 UDP 消息,例如:

use IO::Socket;
my $socket = IO::Socket::INET->new(PeerAddr => 'theserver',
    PeerPort => '1234', Proto => 'tcp', Type => SOCK_STREAM);
print $socket "Hello server!";
close($socket);

服务器必须监听一个端口,并接受到达它的消息:

my $socket = new IO::Socket::INET (LocalHost => 'hostname',
    LocalPort => '1234', Proto => 'tcp', Listen => 1, Reuse => 1);
my $incoming = $sock->accept();
while(<$incoming>) 
    print $_;

close($incoming);

这只是冰山一角,但希望这将有助于您入门。

【讨论】:

你知道一些可以监听我的端口的端口嗅探器吗? n不是像wireshark这样重的东西...... 端口嗅探器显示网络流量,但它们实际上并不侦听。有一个名为 netcat 的实用程序可以监听,例如 nc -l -p 1234 catonmat.net/blog/unix-utilities-netcat【参考方案2】:

从阅读perlipc 文档开始 - 它包含简单服务器和客户端的示例,以及许多非常重要的插件(例如:如何正确地守护进程)。

【讨论】:

【参考方案3】:

虽然有点过时,但您想找到林肯斯坦因的Network Programming with Perl 的副本。另外,请查看名称中带有 Socket 的 Perl 模块。

【讨论】:

【参考方案4】:

如果你在 Windows 上,你可以使用 Net Send,在 CMD 中写“Net Help Send”以获取更多信息,我不知道 perl,但启动 CMD Net Send Computer Message

确保网络发送服务正在运行...谷歌它以获取更多信息。

【讨论】:

而在 sp3 上默认被阻止【参考方案5】:

有很多方法可以做到这一点。最简单的方法之一是让您的程序通过电子邮件发送您的电子邮件地址。在 Perl 中,您可以使用,例如Email::Send。其他方法包括套接字,或让您的程序访问 PC 上的 Web 服务器。这取决于你想使用什么设施。我通常使用ssh 命令通过网络访问其他计算机。

【讨论】:

我是 perl 的新手,我们在那个服务器上没有 smtp 服务器。 不是很清楚你想做什么,所以我无法给出明确的答案。 我想向某个端口发送 tcp 或 udp 消息。

以上是关于如何使用 Perl 通过 TCP 和 UDP 连接到远程机器?的主要内容,如果未能解决你的问题,请参考以下文章

UDP编程

如何使用代码删除 tcp / udp 连接?

UDP和TCP有啥区别

TCP和UDP的区别

tcp和udp的区别

如果我设置了 Open*** UDP 连接,我可以使用 TCP 吗?