【问题标题】:newbie trying to use IO::Socket on Windows新手尝试在 Windows 上使用 IO::Socket
【发布时间】:2011-12-21 06:01:34
【问题描述】:

我是 IO::SOCKET 的新手,也是网络编程的新手。我已经阅读了一些关于相同的在线教程。我在 Windows 上运行 Perl :(别无选择。我的目标是通过本地计算机上的套接字连接 2 个进程。一个进程是 Perl 脚本,它通过 GPIB 命令控制设备。其他进程是一个带有套接字连接的 .exe 文件(类似于带有 Socket 连接的服务器程序)。

这是我打算做的。在我的 Perl 脚本中创建一个客户端套接字并将其连接到 .exe 套接字(通过端口)。用于读/写操作的 fork 客户端程序。问题是我不知道从哪里开始编码。我想我还需要一个主要的 Perl 脚本,并制作另一个通过 GPIB 控制设备的 Perl 脚本作为 Perl 模块。

我希望能提供一些关于这个想法的反馈以及一些关于套接字连接的编程示例。

【问题讨论】:

  • 你可以从perldoc.perl.org/IO/Socket/INET.html上的例子开始
  • Ivan,这不是很好的建议,原因有两个:该文档仅对已经知道自己在做什么的人有用;并且您忽略了 IO::Socket::INET 应该与 Perl 5.14 一起使用,并且更好,因为早期版本仅支持 IPv4,并且在 2011 年编写仅支持 IPv4 的软件是个坏主意。
  • 我想如果我在本地机器上运行应用程序,我不需要担心 IP4 或 IP6 ?...
  • @user2829,如果你使用如下所示的 IO::Socket::IP,你不必担心。

标签: perl


【解决方案1】:

运行不祥的服务器可执行文件。它绑定到一个端口并开始监听。要通过套接字进行有意义的数据交换,您需要知道三件事:

  1. 主机名
  2. 端口号
  3. 协议,即当你与服务器交谈时要说什么,以及如何解释它的答案

use IO::Socket::IP qw(SOCK_STREAM);
my $socket = IO::Socket::IP->new(
    PeerHost => $host_name,
    PeerPort => $port_number,
    Type     => SOCK_STREAM,    # Transmission Control Protocol
) or die "Cannot construct socket - $@";
$socket->say('Hello, server! How are you doing?');
say for $socket->getlines;

有关可用方法的相关文档位于IO::Socket::IPIO::SocketIO::Handle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    • 2020-09-14
    • 2022-07-01
    • 2013-04-01
    • 2018-03-13
    • 1970-01-01
    • 2018-03-19
    相关资源
    最近更新 更多