Perl TCP套接字通信

时间:2016-12-13 13:27:21

标签: perl tcpclient

我正在尝试向主机发送TCP数据包并获得响应,显然没有做正确的事情。

我比较了许多帖子,甚至我的Perl Cookbook,也无法弄清楚我哪里出错了。非常简单地尝试以下内容:

use strict;
use warnings;
use IO::Socket::INET;
$| = 1;
my $socket = new IO::Socket::INET (
    PeerHost => '<the_host_name>',
    PeerPort => '33792',
    Proto => 'tcp'
);
unless($socket) {
    print "couldn't connect to the server\n";
}
# data to send to a server
my $req = <<SBCEND;
START
AUTOLOGUE CENTRAL
TYPE|QUOTE|
H|1|1.0|Regular|CANCEL|6072|TESTDT|JOHNAIX| | |26000|DEMO| | | | | | | | |0
P|1|HAS|LF115|HAS|LF115|10| | | | | | | | | | | | | | |
P|2|WIX|51515|WIX|51515|24| | | | | | | | | | | | | | |
P|3|FRA|PH8A|FRA|PH8A|2| | | | | | | | | | | | | | |
END
SBCEND
my $message = "\002".$req."\003";
my $size = $socket->send($message);
shutdown($socket, 1);
my $response = "";
$socket->recv($response, 1024);
$socket->close();
print "sent: $size\n$req\n";
print "received response: $response\n";

我完全没有回复,不确定我是否应该或者如果我的请求有问题。

当我问他们的支持我是否应该得到任何回复时,如果请求有效,他们会向我发送我应该从文档中收到的回复。

以上请求数据是他们发给我的一个例子。他们确实告诉我在我的请求开始时我需要二进制2,之后需要二进制3,因此我的消息变量在上面。

有人可以告诉我,我在这里做错了吗?

1 个答案:

答案 0 :(得分:1)

原来我在二进制2之后需要一个新行,这一行稍有改动:

my $message = "\002\r\n".$req."\003";