2010-08-20 41 views
0

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

例如,我运行我的tcp服务器并拉起cmd提示符以telnet脚本的端口并发送它寻找的命令。大多数命令发回一行/每字的信息。但是有一些返回一个大的字符串(类似于一段信息)。它用telnet工作正常。

但是,当我创建我的tcp客户端时,我无法让它接受比第一行更多的信息。

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

我也试过类似:(伪代码)

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

这也只是挂在那儿像readlines方法()

如果你需要看到的代码是什么样子,点击这里:Groovy Tcp client/server sending maps

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


编辑

为了应对所提供的第一个答案......

那么做你所提到的以及类似:

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

两个工作,但我发送命令的方式在某种程度上干扰了它的功能。

如果你在我的源头(在上面提供的链接上)取得了一个高峰,也许你可以发现为什么它不能正确使用这些解决方案。

回答

0

您的伪代码是错误的。在每次循环迭代中,您正在读取一行以检查何时结束循环,然后将另一个行读入变量a。这可能是问题所在。如果您的变量rReader,尝试这样的事情:

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

我回答了你的答案,它说** **编辑在我的主要职务。我把它放在那里,所以它会接受代码标签 – StartingGroovy 2010-08-24 19:01:20