我正在完成一项小任务,并坚持迈出了一步。我已经成功编写了一个小的tcp服务器/客户端,但我必须在我们的目录服务器中注册它。为了做到这一点,我需要向DS发送一条消息,该消息将回复" 200成功。"
当我在终端中使用telnet执行此操作时,我连接到服务器,传递我的消息,然后终端吐回" 200成功。"现在,当我在Perl中执行此操作时,我打开一个套接字(成功)并发送我的消息(其中$ reg是我的套接字名称)。
print $reg "Message goes here";
我尝试添加:
print <$reg>;
让服务器回复没有运气。我有点卡住,因为我不确定如何收回此消息,并且不确定它是否正确发送。这是我的套接字,前面有前导子调用:
# Server registration
print ®ister . "\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;
}
答案 0 :(得分:0)
问题是我的消息没有正确的语法。当使用telnet我最后传递\ r时,当我点击返回时它添加了\ n这是服务器所需的。在Perl我只通过了\ r。由于没有添加\ n,并且我的键盘中没有输入返回键,服务器只是拒绝该消息。
感谢那些帮助我的人!