匹配文本文件中的字符串,并返回客户端部分中单词的含义(Scala)

时间:2018-10-21 04:20:35

标签: scala client-server

我想解决一个问题,即客户端将单词发送到服务器,而服务器将遍历文本文件并返回用户键入的单词的含义。我的问题是键入匹配词时,我将返回匹配词的含义,同时返回其他“未找到词”(这是我的控制声明)。因此,我只想在单词被找到并匹配后才返回单词的含义

这里是我的代码:

服务器部分

Future {
  //store local socket references for processing
  val client = socket
  try {
    // Get a communication stream associated with the socket
    val is = new BufferedReader(new InputStreamReader(client.getInputStream))
    // Get a communication stream associated with the socket
    val os = new PrintStream(client.getOutputStream)
    val inFile = new File(filename)
    val readFile = new Scanner(inFile)
    var input : String = null;
    while (true) {
      // Read from input stream
      var line: String = is.readLine() // read the word from client
      println("The client send " + line)
      while (readFile.hasNext()) {
        input = readFile.nextLine()
        println("From the file " + input)
          if (input.contains(line)) {
            os.println(input)
            os.flush()
          }
          else{
            os.println("Word not found")
          }
    }
    }
  } catch {
    case e: Exception => e.printStackTrace
  } finally {
    // Close the connection, but not the server socket
    client.close()
  }
}

客户端部分

val is = new BufferedReader(new InputStreamReader(client.get.getInputStream))
val os = new PrintStream(client.get.getOutputStream) // write to server a strin

println("Please Input Ur word ")

val user = readLine
os.println(user)

while (true) {

  var line: String = is.readLine() //receive string from server
  println(line)
}

我的文本文件是这样格式化的:

非常好或令人愉快;很棒。

1 个答案:

答案 0 :(得分:0)

使用以下方法:

  var found = false;
  while (readFile.hasNext() && !found) {
    input = readFile.nextLine()
    println("From the file " + input)
      if (input.contains(line)) {
        os.println(input)
        os.flush()
        found = true;
      }
  }

  if(!found) {
      os.println("Word not found")
      os.flush()
  }

执行此操作的方法很多,但是您似乎是一个初学者,这是最简单的解决方案。

如果您对功能性方法感兴趣,我们将很乐意为您提供帮助。

希望这会有所帮助。