在Kotlin中创建TCP侦听器

时间:2017-04-30 12:32:19

标签: sockets tcp kotlin

我目前正在为我正在进行的项目提供Kotlin旋风。这个项目要求我打开一个Socket并在端口上侦听TCP数据包,以便我以后可以解析它们。在Java中,如果使用缓冲区读取器,套接字和服务器套接字定义了引用的变量,则以下方法有效:

while((CurrentLine = ClientBufferReader.readLine()) != null){FullString += CurrentLine}

但是,在Kotlin中,这不起作用,因为无法评估作业。我怎样才能在Kotlin中检索相同的结果?

1 个答案:

答案 0 :(得分:8)

在这种特殊情况下,您可以将其重写为

val FullString = generateSequence { ClientBufferReader.readLine() }.joinToString(separator = "")

这是有效的,因为generateSequence会计算传递给它的lambda,直到它返回null并发出所有非空项。 joinToString然后使用String有效地创建连续的StringBuilder

一般来说,模式

while((x = foo()) != something) { bar() }

可以替换为

var x = foo()
while (x != something) {
  bar()
  x = foo()
}

虽然显然这更加冗长。

还有一点需要注意:您的变量名称不应以大写字母开头。 See style guide for more info.