gpt4 book ai didi

Java:字节未正确传输

转载 作者:行者123 更新时间:2023-12-01 23:32:53 25 4
gpt4 key购买 nike

我已经制作了一个服务器,应该让客户端更新文件。总而言之,它正在工作,但一些字节(例如 HEX 9D)正在变为 HEX 3F。我没有更多的想法,也没有在网上找到任何东西。我的服务器代码:

package de;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.Socket;

public class UpdateThread extends Thread {
public UpdateThread(Socket s) {
socket = s;
}

public void run() {
try {
execute();
} catch (IOException e) {
e.printStackTrace();
}
}

@SuppressWarnings("resource")
public void execute() throws IOException {
if (UpdateProvider.update) {
int i = 0;
SocketTools.sendData(1, socket);
File file = new File("." + System.getProperty("file.separator").toString() + "update_package.jar");
OutputStreamWriter writer = new OutputStreamWriter(socket.getOutputStream());
FileReader reader = new FileReader(file);
while ((i = reader.read()) != -1) {
writer.write(i);
}

writer.flush();
writer.close();

} else {
SocketTools.sendData(0, socket);
}
}

private Socket socket;

}

我的客户端代码:

package de;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;

public class Main {
@SuppressWarnings("resource")
public static void main(String[] args) throws IOException {
Socket s = new Socket("localhost", 16642);
BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream()));
//InputStreamReader reader = new InputStreamReader(s.getInputStream());
int i = 0;
FileWriter writer = new FileWriter(new File("C:\\update_package.jar"));

int state = reader.read();

if (state == 48) {
System.exit(0);
}

if (state == 49) {
while ((i = reader.read()) != -1) {
System.out.println(i);
writer.write(i);
}
System.out.println("ENDE");
writer.flush();
}
}
}

最佳答案

您没有为传输指定正确的编码(无论如何,您应该使用 InputStream/OutputStreams 而不是 Reader/Writer ,因为您处理的是二进制数据而不是文本)。 0x3F 是问号“?”,表示已转换非 ASCII 字符(128 或更高)。

因此,放弃读者和作者,转而使用 Streams。

关于Java:字节未正确传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19080567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com