Я пытаюсь написать клиентскую программу на Perl для подключения к серверу Java-приложения (JDuplicate). Я вижу, что сервер java использует методы DataInput.readUTF и DataInput.writeUTF, которые на веб-сайте JDuplicate перечислены как «модифицированный протокол Java UTF-8».
Моя тестовая программа довольно проста, я пытаюсь отправить данные клиентского типа, которые должны вызвать ответ от сервера, однако время ожидания истекло:
#!/usr/bin/perl
use strict;
use Encode;
use IO::Socket;
my $remote = IO::Socket::INET->new(
Proto => 'tcp',
PeerAddr => 'localhost',
PeerPort => '10421'
) or die "Cannot connect to server\n";
$|++;
$remote->send(encode_utf8("CLIENTTYPE|JDSC#0.5.9#0.2"));
while (<$remote>) {
print $_,"\n";
}
close($remote);
exit(0);
Я пробовал $ remote-> send (pack ("U", "...")); я пробовал "использовать utf8;", я пробовал binmode ($ remote, ": utf8 "), и я попытался отправить простой текст в формате ASCII, на который ничего не получено.
Я вижу, что данные отправляются с помощью tcpdump, все в одном пакете, но сам сервер ничего с этим не делает (кроме подтверждения пакета).
Есть ли что-то еще, что мне нужно сделать, чтобы удовлетворить "модифицированную" реализацию utf Java?
Спасибо.