[英]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.