将消息发送到服务器并打印回复

时间:2014-04-07 16:50:52

标签: perl sockets tcp telnet

我正在完成一项小任务,并坚持迈出了一步。我已经成功编写了一个小的tcp服务器/客户端,但我必须在我们的目录服务器中注册它。为了做到这一点,我需要向DS发送一条消息,该消息将回复" 200成功。"

当我在终端中使用telnet执行此操作时,我连接到服务器,传递我的消息,然后终端吐回" 200成功。"现在,当我在Perl中执行此操作时,我打开一个套接字(成功)并发送我的消息(其中$ reg是我的套接字名称)。

print $reg "Message goes here";

我尝试添加:

print <$reg>;

让服务器回复没有运气。我有点卡住,因为我不确定如何收回此消息,并且不确定它是否正确发送。这是我的套接字,前面有前导子调用:

# Server registration
print &register . "\n";

sub register {
my $reg = IO::Socket::INET->new (
    PeerHost    =>  "server goes here",
    PeerPort    =>  port goes here,
    Proto       =>  $protocol
) or die "Failed to make socket for directory registration: $!\n";
print $reg "Register <my name> $ipaddr $port" . '\r'; #with required carriage return, this works in telnet too
my $msg = <$reg>;
print $msg;

}

1 个答案:

答案 0 :(得分:0)

问题是我的消息没有正确的语法。当使用telnet我最后传递\ r时,当我点击返回时它添加了\ n这是服务器所需的。在Perl我只通过了\ r。由于没有添加\ n,并且我的键盘中没有输入返回键,服务器只是拒绝该消息。

感谢那些帮助我的人!