0

我正在尝试按块从本地存储中读取视频文件并上传到服务器。我有这个代码在另一个java平台上工作,所以我认为它会很简单。

当我尝试使用打开文件时

 File f = new File(filePath);
 fileIn = new FileInputStream(f);

它打开了,我可以从文件中读取我需要的任何内容,尽管我调用了我的代码

    SocketFactory socketFactory = SSLSocketFactory.getDefault();
    Socket socket = socketFactory.createSocket(url, 443);

    _in = new InputStreamReader(socket.getInputStream());
    _out = (OutputStream)socket.getOutputStream();

套接字连接正常,但是当我在这段代码之后读取 FileInputStream 时,我得到流关闭异常。

有任何想法吗?我在日志中看不到任何内容以显示任何失败,但是一旦我连接到服务器,我就无法从文件输入流中读取?

让我知道您是否需要知道其他任何帮助。

4

2 回答 2

1

这个例子对我有用:

public class MainClass {
  public static void main(String[] args) {
    String host = args[0];
    int port = Integer.parseInt(args[1]);

    try {
      System.out.println("Locating socket factory for SSL...");
      SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();

      System.out.println("Creating secure socket to " + host + ":" + port);
      SSLSocket socket = (SSLSocket) factory.createSocket(host, port);

      System.out.println("Enabling all available cipher suites...");
      String[] suites = socket.getSupportedCipherSuites();
      socket.setEnabledCipherSuites(suites);

      System.out.println("Registering a handshake listener...");
      socket.addHandshakeCompletedListener(new MyHandshakeListener());

      System.out.println("Starting handshaking...");
      socket.startHandshake();

      System.out.println("Just connected to " + socket.getRemoteSocketAddress());
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

class MyHandshakeListener implements HandshakeCompletedListener {
  public void handshakeCompleted(HandshakeCompletedEvent e) {
    System.out.println("Handshake succesful!");
    System.out.println("Using cipher suite: " + e.getCipherSuite());
  }
}



正如 snicolas 所说,socket.startHandshake()可以解决您的问题。

于 2012-05-07T13:27:26.087 回答
-1

你没有调用 socket.startHandshake();

于 2012-05-07T13:20:40.233 回答