Как передать ключ ввода с данными в сокет - PullRequest
0 голосов
/ 07 июля 2019

Я пытаюсь создать живую среду для передачи данных из файла через определенный промежуток времени в поток сокетов.Это работает правильно, но для чтения данных с помощью socketTextStream он будет рассматривать данные только при нажатии клавиши ввода.Следовательно, я хочу, чтобы клавиша была нажата или прошла что-то, что может интерпретироваться при нажатии клавиши ввода.

Я попытался добавить «\ n» со строкой:

dOut.writeUTF(values.replace(",","") )
dOut.writeChars("\n")

Однако, он просто создает новую строку, но ключ ввода не добавляется.

Кроме того, я попытался передать его, используя:

dOut.writeUTF(values.replace(",","") )
dOut.writeChars(Key.Enter+"")

Этот просто добавляет строку Enter в конце каждой строки.Но это не нажатие клавиши ввода

МОЙ код:

val socket = new Socket(InetAddress.getByName("localhost"), 9090)
val dOut = new DataOutputStream(socket.getOutputStream())

// Just to pass the enter key I tried using scala.swing
import scala.swing.event.Key
 // values is just a string read from json to be sent over socket 
  stream.
  values = values.replace("\"","")
  try {
    println("trying to connect to socket sending values")
    println(values)
   dOut.writeUTF(values.replace(",","") )
    dOut.writeChars(Key.Enter)
    dOut.flush()
    Thread.sleep(1500)
  } catch {
    case e: IOException =>
      System.err.println(e)
  }

Ниже приведен код стримера, который читает из того же сокета:

val ssc = new StreamingContext(config,Seconds(3))
val data = ssc.socketTextStream("localhost",9090)
val words = data.flatMap(_.split(" ")).map(w => 
(w,1)).reduceByKey(_+_)
words.print()
ssc.start()
ssc.awaitTermination()

С"\ n" отправляет, но клавиша ввода не нажимается, поэтому мой стример сокета не может прочитать этот код:

*133.3000 51609 133.2400 133.3150 133.2200 
+135.1355 264853 135.0900 135.1500 134.9700 
+131.7500 243357 131.8000 132.0400 131.7200 
+132.8800 121197 132.8000 132.8800 132.7700 

С Key.Enter + "\ n" и Key.Enter. ("\ n") он показывает вывод в виде:

136.0800 109158 136.0300 136.0900 135.9900 Enter
+137.1621 141391 137.2100 137.2200 137.1350 Enter

Пожалуйста, помогите мне добавить кет комментария к клавише ввода для отправки в работающий поток сокетов.Любая помощь будет оценена.Спасибо.

...