我通常是 .net 开发人员(不要伤害我!)所以请原谅我在这里犯的任何非常愚蠢的错误 :)
我有一个用 .net 编写的 TCP 侦听器,它接收 xml 并发回响应。我正在尝试用 groovy 为它编写一个客户端,以便我可以使用 loadUI 加载测试。这是我到目前为止所拥有的:
def s = new Socket("10.208.24.59", 9061);
s.withStreams { inStream, outStream ->
def reader = inStream.newReader()
def responseText = reader.readLine()
outStream << "Hello test server"
println "response = $responseText"
}
s.close();
我在 Eclipse 中调试,它挂在 withStreams 线上。我应该收到一条“消息不是 XML”消息,我可以通过 telnet 得到它。
任何想法我做错了什么?
更新 我刚刚尝试过这个而不是 withStreams 闭包:
def r = new BufferedReader(new InputStreamReader(s.getInputStream()));
def w = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
w.write("Hello test server 2");
w.flush();
println r.readLine();
w.flush();
w.close();
它现在挂在 println r.readLine() 调用上
再次更新
事实证明,这是远程服务关闭(或者更确切地说 -没有关闭)流的方式的问题。.net 和我们的大型机都正确处理了它,但 groovy 脚本并不满意。我已经修复了服务并且脚本现在运行愉快,对于遇到类似问题的其他人来说值得牢记。