簡體   English   中英

將散列的字節數組從android設備發送到服務器套接字並進行存儲

[英]Sending a hashed byte array from an android device, to a server socket and storing it

我在接收端即服務器上有問題。 它正在接收數據,並且我正在嘗試將該數據存儲在字節數組中。 我在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()調用從客戶端關閉連接。 這條路:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM