簡體   English   中英

從DataOutputStream重新分配給BufferedOutputStream和FileOutputStream之后,再也無法使用writeUTF()

[英]Not able to use writeUTF() anymore after reassigning to BufferedOutputStream and FileOutputStream from DataOutputStream

我在使用writeUTF(“ String”)進行套接字轉換時遇到麻煩,以使客戶端使用readUTF()收聽消息。
到目前為止,它可以按我的意願工作。 但是,在添加了用於從客戶端接收文件的代碼后,我無法向客戶端發送任何消息。 代碼如下。 解決它已經好幾天了...有人可以幫我解決這個問題嗎? 感謝您的投入:-)

// Client.java

            String ack = in.readUTF();
            println(ack); // "How do you do?"

            String aack = in.readUTF();
            println(aack); // HANGING FOREVER

// Server.java

                Socket server        = serverSocket.accept();
                DataInputStream in   = new DataInputStream(server.getInputStream());
                DataOutputStream out = new DataOutputStream(server.getOutputStream());




// CAN SEND MESSAGES    
                out.writeUTF("How do you do? "+ "\r\n");
                out.flush();

// AFTER THIS SEGMENT CANNOT WRITE TO CLIENT ANYMORE

                    int bytesRead;
                    int current              = 0;
                    FileOutputStream fos     = null;
                    BufferedOutputStream bos = null;
                    try {
                        byte [] byteArray = new byte [FILE_SIZE];
                        InputStream is    = server.getInputStream();
                        fos               = new FileOutputStream(FILE_TO_RECEIVED);
                        bos               = new BufferedOutputStream(fos);
                        bytesRead         = is.read(byteArray,0,byteArray.length);
                        current           = bytesRead;
                        do {
                            bytesRead =
                                    is.read(byteArray, current, (byteArray.length-current));
                            if(bytesRead >= 0) current += bytesRead;
                        } while(bytesRead > -1);

                        bos.write(byteArray, 0 , current);
                        bos.flush();
                        System.out.println("File " + FILE_TO_RECEIVED
                                + " downloaded (" + current + " bytes read)");
                    }
        finally {
            if (fos != null) fos.close();
            if (bos != null) bos.close();
        }
// WORKS ALRIGHT UP TO THIS PART

// PROBLEM BEGINS...
// CANNOT                 
// SEND MASSAGE ANYMORE  
// CLIENT WAIT FOR MSG HANGING FOREVER 
             out.writeUTF("Can you hear?"+ "\r\n");
             out.flush();

我建議您使用OutputStreamWriter,例如

OutputStream out = ...;
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out, "utf-16"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM