简体   繁体   English

客户端套接字接受的数据与服务器套接字不同

[英]Client Socket Accepted Data is Different From Server Socket

I'm trying to simulate server - client socket connection at Java. 我正在尝试模拟服务器-Java的客户端套接字连接。 I have that code: 我有该代码:

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();
    }
}

My data package has hexadecimal values. 我的数据包中有十六进制值。 It is a 127 length array. 它是127个长度的数组。 When I check client input stream I see that only the first 26 elements are the ones that I wrote the output stream of the server. 当我检查客户端输入流时,我发现只有前26个元素是我编写服务器输出流的元素。 Others are different. 其他人则不同。 ie 26th element is 0xC1 which is 193 in decimal but client input stream accepts is 196 in decimal. 即第26个元素是0xC1 ,十进制为193 ,但客户端输入流接受的十进制为196

What I miss? 我想念什么?

您应该使用OutputStream而不是PrintWriter来写入二进制数据。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM