0

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

例如,我运行我的 tcp 服务器并打开 cmd 提示符以 telnet 脚本的端口并向其发送它正在寻找的命令。大多数命令发回一行/一个字的信息。但是有一些会发回一个大字符串(类似于一段信息)。它适用于 telnet。

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

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

我也尝试过类似的东西:(伪代码)

while((r.readLine()) !=null) {
    def a = r.readLine()
}

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

如果您需要查看代码的外观,请查看此处:Groovy Tcp 客户端/服务器发送地图

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


编辑

针对提供的第一个答案...

做好你提到的事情以及类似的事情:

while((line = r.readLine()) !=null) {
    println line
}

两者都有效,但我发送命令的方式以某种方式干扰了它的功能。

如果您在我的来源(在上面提供的链接上)达到顶峰,也许您会发现为什么它不能与这些解决方案一起正常工作。

4

1 回答 1

0

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

r.eachLine { line ->
    def a = line
}
于 2010-08-21T22:09:50.643 回答