Java 将哈希字节数组从android设备发送到服务器套接字并存储

Java 将哈希字节数组从android设备发送到服务器套接字并存储,java,android,sockets,hash,bytearray,Java,Android,Sockets,Hash,Bytearray,我在接收端即服务器上遇到问题。它正在接收数据,我正试图将数据存储在字节数组中。我在一个while循环中这样做,但它从未终止,我也不知道为什么 Android代码段: try { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); MessageDigest digest = MessageDigest.getInstance("SHA-256"); byte[] ke

我在接收端即服务器上遇到问题。它正在接收数据,我正试图将数据存储在字节数组中。我在一个while循环中这样做,但它从未终止,我也不知道为什么

Android代码段:

try {
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        MessageDigest digest = MessageDigest.getInstance("SHA-256");

        byte[] keyBytes = keystore.get("secretkey");
        byte[] nonceBytes = nonce.getBytes("UTF-8");

        outputStream.write( nonceBytes );
        outputStream.write( keyBytes );

        byte[] bytesToEncrypt = outputStream.toByteArray();

        byte[] hashedBytes = digest.digest(bytesToEncrypt);

        Socket clientSocket = new Socket(myserver, myport);
        OutputStream outToServer = clientSocket.getOutputStream();
        outToServer.write(hashedBytes);
    }
服务器代码段:

try {
    ServerSocket serverSocket = new ServerSocket(8311);

    while(true) {
        Socket connectionSocket = serverSocket.accept();
        System.out.println("Receivied something..");

        InputStream inFromClient = connectionSocket.getInputStream();

        byte[] buffer = new byte[connectionSocket.getReceiveBufferSize()];

        try {
            System.out.println("Trying to store data in byte array");
        int bytesRead = -1;

        while( ( bytesRead = inFromClient.read( buffer ) ) != -1 ) {  
            baos.write( buffer, 0, bytesRead );
        }

        // This never prints
        System.out.println("Done");


        challengeReceived = baos.toByteArray();
        } 
        catch(Exception e) {
            e.printStackTrace();
        }
}
它永远不会使用此实现打印“完成”。感谢您的建议。

服务器退出

    while( ( bytesRead = inFromClient.read( buffer ) ) != -1 ) {  
        baos.write( buffer, 0, bytesRead );
    }
当客户端关闭连接时循环

尝试使用
close()
call从客户端关闭连接。这样:

outToServer.write(hashedBytes);
clientSocket.close();

真不敢相信我错过了。。非常感谢。