我正在尝试在Java上模拟服务器 - 客户端套接字连接。我有那个代码:
private static Socket clientSocket;
private static PrintWriter pw;
private static Socket serverSocket;
private static final int PORT_NUMBER = 1146;
public static void init() throws IOException {
ServerSocket sSocket = new ServerSocket(PORT_NUMBER);
clientSocket = new Socket("localhost", PORT_NUMBER);
serverSocket = sSocket.accept();
OutputStream os = serverSocket.getOutputStream();
pw = new PrintWriter(os, true);
}
private void writePackage(int[] dataPackage) {
for (int packageByte : dataPackage) {
pw.write(packageByte);
}
pw.flush();
try {
InputStream is = clientSocket.getInputStream();
} catch (IOException e) {
e.printStackTrace();
}
}
我的数据包具有十六进制值。这是一个127长度的阵列。当我检查客户端输入流时,我看到只有前26个元素是我编写服务器输出流的元素。其他人则不同。即第26个元素是0xC1
,它是十进制的193
,但客户端输入流接受的是十进制的196
。
我想念的是什么?
答案 0 :(得分:1)
您应该使用OutputStream
来编写二进制数据,而不是PrintWriter
。