0
我有一個TCP套接字,我在Raspberry Pi上用Java打開,並且一個遠程硬件向它發送數據。不幸的是,提供給控制檯的數據對於sser是不可讀的。Java TCP Socket - 人類可讀取輸出
的Java代碼如下:
import java.io.*;
import java.net.*;
class TCPServer {
public static void main(String argv[]) throws Exception {
String clientSentence;
String capitalizedSentence;
ServerSocket welcomeSocket = new ServerSocket(11111);
while(true) {
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine();
System.out.println("Received: " + clientSentence);
capitalizedSentence = clientSentence.toUpperCase() + '\n';
outToClient.writeBytes(capitalizedSentence);
}
}
}
我與tcpdump的檢查和硬件本身,該數據正由樹莓裨發送的和接收。我的預感是行:
clientSentence = inFromClient.readLine();
最終的要求是採取發送的數據,並將其轉儲到SQL表,所以我需要的TCP數據包轉換爲人類可讀的字符串,因此我的絆腳石這裏塊。
如果您的硬件發送二進制數據流的raspi,你應該找出使用哪種協議。如果設備發送文本到raspi,那麼你應該知道他們使用什麼字符編碼。 (它當然不是ASCII)也許是UTF-16或UTF-32。在文件'file.txt'中寫入輸入流,並在shell中輸入'file'。如果Java知道字符集,則可以將輸入流配置爲轉換爲Java字符串。 –