Задать вопрос
@Chame1eon
Пишу скрипты, глотаю кофе!

Не могу понять причину потери байтов в процессе передачи данных между клиентом и сервером, кто может помочь?

Участок кода сервера
try {
			// Подключени необходимых методов
			InputStream is = socket.getInputStream();
			DataInputStream dis = new DataInputStream(is);
			byte[] message = new byte[dis.readInt()];

			// Получение массива данных
			dis.read(message);
			System.out.println("Message received");
			System.out.println(message.length+"\n"+message);
			mes = message;

		} catch (IOException e) {
			System.out.println("Error 6");
		}


Участок кода клиента
Socket socket = new Socket(ip, port1);
		OutputStream out = socket.getOutputStream();
		Scanner scn = new Scanner(System.in);

		// Рукопожатие
		InputStream is = socket.getInputStream();
		DataInputStream dis = new DataInputStream(is);
		byte[] message = new byte[dis.readInt()];
		dis.read(message);

		if (new String(message).equals("handshake request")) {
			String hand = "handshake response";
			byte[] handshake = hand.getBytes("UTF-8");
			out.write(handshake.length);
			out.write(handshake);
			out.flush();
			
			System.out.println(handshake.length+"\n"+handshake);
		}else{ 
			System.out.println("Error");
		}


Помогите разобраться! Ввел вывод лог информацию по размеру массива и его содержанию, вот что получил:

Клиент
18
[B@610455d6

Сервера
308830574
[B@658afb6a

В итоге получается так, что в дороге терятеся 3 первых символа

Заранее спасибо!
  • Вопрос задан
  • 232 просмотра
Подписаться 2 Комментировать
Подписчики вопроса 2 К ответам на вопрос (2)