Выдает ошибку «Ошибка неверного дескриптора файла» во время выполнения Perl - PullRequest
0 голосов
/ 30 августа 2018

[ Вопрос обновляется с учетом комментариев комментатора ] Когда я использую следующую команду для выполнения prop.obj "perl sendXssl.pl имя хоста порт prop.obj" , выдает ошибку как «Ошибка Плохой дескриптор файла, ssl_error = Ошибка попытки соединения SSL при sendXssl. PL Line 6 ". Пожалуйста, помогите мне решить это. Моя Perl-программа приведена ниже ...

Perl

use IO::Socket::SSL qw( SSL_VERIFY_NONE );
use strict;
use warnings qw( all );
$|=1;

my $sock = IO::Socket::SSL->new(
 PeerHost => $ARGV[0],
 PeerPort => $ARGV[1],
 SSL_verify_mode => SSL_VERIFY_NONE)
 or die "error=$!, ssl_error=$IO::Socket::SSL::SSL_ERROR";

print $sock "X";
my $data ;
my $file = $ARGV[2];
open(my $fh,'<',$file) or die "Error 2 $!\n";
{
 local $/;
 $data = <$fh>;
}
close($fh);

my $pack = $data;
print $sock $pack;

Я создал prop.obj объект из следующего Java-файла

Java

import java.io.FileOutputStream;
    import java.io.ObjectOutputStream;
    import java.util.Properties;

    public class PropertiesX {

        public static void main(String[] args) {
            try {
                String[] s = new String[1];
                s[0] = "notepad.exe";
                Properties p = new Properties();
                p.put("commandArgs",s);
                p.setProperty("parent", "c:\\windows\\system32\\notepad.exe");
                FileOutputStream fos = new FileOutputStream("prop.obj");
                ObjectOutputStream oos = new ObjectOutputStream(fos);
                oos.writeObject(p);
                oos.close();
                System.out.println(p.toString());
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }

1 Ответ

0 голосов
/ 30 августа 2018

Вы смешиваете прямой и косвенный синтаксис метода вместе:

$sock = new IO::Socket::SSL->new(
#       ~~~                  ~~~
  PeerHost => $ARGV[0],
  PeerPort => $ARGV[1],
  SSL_verify_mode => SSL_VERIFY_NONE)

Удалите первый new и попробуйте снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...