Groovy tcp读线

Groovy tcp读线,groovy,tcp,null,readline,Groovy,Tcp,Null,Readline,我最近在groovy中创建了一个tcp服务器,我想知道如何使它的行为类似于telnet 例如,我运行我的tcp服务器,并调出cmd提示符来telnet脚本的端口,并向它发送它要查找的命令。大多数命令返回一行/字的信息。但是,也有一些方法返回一个大字符串(类似于一段信息)。它与telnet配合使用效果很好 但是,当我创建tcp客户端时,我无法让它接受除第一行信息以外的任何内容 我使用readLine()而不是readLines(),因为如果我使用readLines(),它会挂在那里,不允许我发送下

我最近在groovy中创建了一个tcp服务器,我想知道如何使它的行为类似于telnet

例如,我运行我的tcp服务器,并调出cmd提示符来telnet脚本的端口,并向它发送它要查找的命令。大多数命令返回一行/字的信息。但是,也有一些方法返回一个大字符串(类似于一段信息)。它与telnet配合使用效果很好

但是,当我创建tcp客户端时,我无法让它接受除第一行信息以外的任何内容

我使用readLine()而不是readLines(),因为如果我使用readLines(),它会挂在那里,不允许我发送下一个命令

我还尝试了以下方法:(psuedocode)

它也像readLines()一样挂在那里

如果需要查看代码的外观,请选中此处:

我的sendMessage函数在这些上是不同的,但我将其更改为相同的,并且使用的是我在客户端上的函数


编辑

作为对第一个答案的回应

很好地完成您提到的内容,以及类似以下内容:

while((line = r.readLine()) !=null) {
    println line
}
两者都可以工作,但我发送命令的方式在某种程度上干扰了它的功能


如果您在我的源代码处(在上面提供的链接上)看到一个峰值,也许您可以发现为什么它不能与这些解决方案正常工作

您的伪代码是错误的。在每次循环迭代中,您要读取一行以检查何时结束循环,然后在变量a中读取另一行。这可能就是问题所在。如果变量
r
读取器
,请尝试以下操作:

r.eachLine { line ->
    def a = line
}

我回复了你的答案,在我的主要帖子里写着编辑。我把它放在那里,这样它就可以接受代码标签
r.eachLine { line ->
    def a = line
}