cari

Rumah  >  Soal Jawab  >  teks badan

网络编程 - Java调用DataOuputStream的write方法写入数据第一个字节不知所踪

大家讲道理大家讲道理2783 hari yang lalu927

membalas semua(4)saya akan balas

  • 巴扎黑

    巴扎黑2017-04-18 10:38:57

    Adakah anda telah menyelesaikan masalah melekit TCP?
    Memandangkan ia adalah TCP, kami perlu mempertimbangkan 粘包 isu. 粘包Jika masalah tidak diselesaikan, anda tidak akan dapat menentukan bait yang merupakan 4 bait pertama bagi satu paket.

    Ringkasnya, anda menerima banyak bait, dan sumber bait ini mungkin seperti berikut:

    • Hantar semua bait dua atau tiga paket bersama

    • Separuh kedua paket sebelumnya dan separuh pertama bait paket seterusnya dihantar bersama

    • Ringkasnya, ia adalah campuran separuh beg atau beg melekit

    Kami menggunakan netty untuk menyelesaikan masalah paket melekit tcp Berikut adalah penyelesaian yang diterangkan dengan baik berdasarkan netty: https://my.oschina.net/andylu...

    balas
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:38:57

    Apakah maksud membaca aliran input secara langsung dalam Java tanpa menangkap paket?

    balas
    0
  • 巴扎黑

    巴扎黑2017-04-18 10:38:57

    Ini ialah masalah pengepala komunikasi soket Beginilah cara saya menanganinya dalam projek saya yang terdahulu

    send(String url, int port, String content){
        Socket socket = null;
        OutputStream out = null;
        DataOutputStream dataOutputStream = null;
        try {
            socket = new Socket(url, port);
            out = socket.getOutputStream();
            dataOutputStream = new DataOutputStream(out);
            dataOutputStream.writeInt(content.getBytes().length);
            dataOutputStream.write(content.getBytes());
            dataOutputStream.flush();
            ...
        }
    }
    

    Adalah disyorkan untuk menulis soket penerima untuk penyahpepijatan perlu menghadapi masalah dengan penangkapan paket

    Semoga ia dapat membantu anda~

    balas
    0
  • 迷茫

    迷茫2017-04-18 10:38:57

    Sudahkah anda menelefon flush?

    balas
    0
  • Batalbalas