У меня вопрос, я пытаюсь отправить карту, используя сокет, как показано ниже
while(scanning){
try {
clientSocket = new Socket(HOST, PORT);
dataInput = new DataInputStream(clientSocket.getInputStream());
dataOutput = new DataOutputStream(clientSocket.getOutputStream());
System.out.println("Connected to server");
receiverThread = new ReceiverThread(clientSocket, dataInput, dataOutput);
receiverThread.start();
scanning = false;
Map<String, String> jsonMap = new HashMap<String,String>();
jsonMap.put("UserName", "TestName");
jsonMap.put("FileName", "TestFileName.txt");
jsonMap.put("FileSize", "1234");
//sending file
File f = new File("test.txt");
System.out.println("F length"+ f.length());
dataOutput.writeByte(1);
dataOutput.writeUTF(String.valueOf(jsonMap));
dataOutput.writeByte(2);
dataOutput.write(Integer.parseInt(String.valueOf(f.length())));
//sendFile(f.getAbsolutePath(),f.length(), receiverThread.getDataOutputStream());
//end sending
} catch (ConnectException e) {
System.out.println("Server not available");
} catch (SocketException e) {
System.out.println("Connection broken");
} catch (Exception e) {
System.out.println("ERROR " + e);
} finally {
if (receiverThread != null)
try {
receiverThread.interrupt();
} catch (Exception e) {
}
}
, и получаю вот так
while (true) {
try {
messageType = dataInput.readByte();
switch (messageType){
case 1:
System.out.println("TEST " + dataInput.readUTF());
message = dataInput.readUTF();
System.out.println("TTTT " + message);
stringToMap(message);
System.out.println("TEST MAP UN1 ");
System.out.println("TEST map " + map.get("UserName"));
System.out.println("TEST MAP UN2 ");
break;
case 2:
saveFile(clientSocket);
break;
default:
throw new IllegalStateException("Unexpected value: " + messageType);
}
System.out.println("TEST MESSAGE ");
} catch (Exception e) {
System.out.println("ERROR " + Arrays.toString(e.getStackTrace()));
System.out.println("ERROR " + e.getMessage());
System.exit(2);
}
и когда я делаю это:
System.out.println("TEST " + dataInput.readUTF());
Это работает, но когда я пытаюсь назначить программу переменной String, ничего не делаю, она не вылетает, не выдает ошибку, просто остановитесь на System.out.println ...
кто-то есть идеи почему?