[英]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.