cập nhật trong java9: https://docs.oracle.com/javase/9/docs/api/java/io/InputStream.html#transferTo-java.io.OutputStream-
Tôi đã thấy một số chủ đề tương tự, nhưng không-hoàn-toàn-điều-tôi cần.
Tôi có một máy chủ, về cơ bản sẽ nhận đầu vào từ một máy khách, máy khách A và chuyển tiếp nó, từng byte cho từng byte, tới một máy khách khác, máy khách B.
Tôi muốn kết nối luồng đầu vào của máy khách A với luồng đầu ra của máy khách B. Điều đó có thể thực hiện được không? Những cách để làm điều đó là gì?
Ngoài ra, các ứng dụng khách này đang gửi cho nhau các tin nhắn, hơi nhạy cảm về thời gian, vì vậy việc lưu vào bộ đệm sẽ không thực hiện được. Tôi không muốn một bộ đệm nói là 500 và một máy khách gửi 499 byte và sau đó máy chủ của tôi ngừng chuyển tiếp 500 byte vì nó không nhận được byte cuối cùng để lấp đầy bộ đệm.
Ngay bây giờ, tôi đang phân tích cú pháp từng tin nhắn để tìm độ dài của nó, sau đó đọc các byte độ dài, rồi chuyển tiếp chúng. Tôi đã hình dung (và đã thử nghiệm) điều này sẽ tốt hơn việc đọc một byte và chuyển tiếp một byte nhiều lần vì điều đó sẽ rất chậm. Tôi cũng không muốn sử dụng bộ đệm hoặc bộ đếm thời gian vì lý do tôi đã nêu trong đoạn cuối của mình - tôi không muốn các tin nhắn phải đợi một thời gian dài mới được thông qua đơn giản vì bộ đệm chưa đầy.
Cách tốt để làm điều này là gì?