Java 将哈希字节数组从android设备发送到服务器套接字并存储
我在接收端即服务器上遇到问题。它正在接收数据,我正试图将数据存储在字节数组中。我在一个while循环中这样做,但它从未终止,我也不知道为什么 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
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();
真不敢相信我错过了。。非常感谢。