在执行Perl期间给出错误“错误的错误文件描述符”

时间:2018-08-30 12:38:23

标签: java perl

[问题已通过遵循评论者的评论] 更新,当我使用以下命令执行prop.obj时 “ perl sendXssl.pl 主机名 端口 prop.obj” ,它给出了错误,因为“错误文件描述符错误,ssl_error = SSL连接尝试失败在sendXssl.pl第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;

我从以下Java文件中创建了 prop.obj 对象

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 :(得分:0)

您正在将直接和间接方法语法混合在一起:

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

删除第一个new,然后重试。