代码之家  ›  专栏  ›  技术社区  ›  Pawan Dwivedee

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

  •  -2
  • Pawan Dwivedee  · 技术社区  · 6 年前

    [ ] 当我使用以下命令执行prop.obj时 “perl sendXssl.pl 主机名 港口 ,它给出错误为“error Bad file descriptor,ssl_error=ssl connect attempts failed at 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;
    

    我创造了 来自以下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 回复  |  直到 6 年前
        1
  •  0
  •   choroba    6 年前

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

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

    删除第一个 new 再试一次。