我试图将TCP数据包发送到主机并获得响应,并且显然不正确。
我已经与许多帖子甚至我的perl食谱进行了比较,无法弄清楚我的问题。非常简单地尝试以下内容:
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 servern";
}
# 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 = " 02".$req." 03";
my $size = $socket->send($message);
shutdown($socket, 1);
my $response = "";
$socket->recv($response, 1024);
$socket->close();
print "sent: $sizen$reqn";
print "received response: $responsen";
我根本没有任何回应,不确定我是否应该这样做,或者我的要求是否有问题。
当我询问他们的支持时,如果我应该得到任何答复,无论该请求是否有效,他们都会向我发送我应该从文档那里收到的响应。
上面的请求数据是他们发送给我的示例。他们确实告诉我,在我的请求开始时我需要二进制2,然后二进制3,因此我的消息变量上面是我的消息变量。
有人可以告诉我我在这里是否做错了什么?
事实证明,我需要在二进制2之后的新线路,对此行进行了很小的更改:
my $message = " 02rn".$req." 03";