最近、groovy で tcp サーバーを作成しましたが、telnet と同じように動作させる方法を知りたいと思っています。
たとえば、tcp サーバーを実行して cmd プロンプトを表示し、スクリプトのポートに telnet で接続して、探しているコマンドを送信します。ほとんどのコマンドは、1 行または 1 語の情報を送り返します。ただし、大きな文字列 (情報の段落に似ています) を送り返すものもいくつかあります。telnet で問題なく動作します。
しかし、tcp クライアントを作成すると、最初の行の情報しか受け入れられません。
readLines() の代わりに readLine() を使用しています。これは、readLines() を使用するとそこでハングし、次のコマンドを送信できないためです。
私も次のようなことを試しました:(疑似コード)
while((r.readLine()) !=null) {
def a = r.readLine()
}
これも readLines() のようにそこにぶら下がっています
コードがどのように見えるかを確認する必要がある場合は、ここを確認してください: Groovy Tcp クライアント/サーバー送信マップ
私の sendMessage 関数はそれらとは異なりますが、同じになるように変更し、クライアントにあるものを使用しています。
編集
提供された最初の回答に応じて...
あなたが言及したことだけでなく、次のようなこともうまくやっています:
while((line = r.readLine()) !=null) {
println line
}
どちらも機能しますが、コマンドの送信方法が何らかの形で機能に干渉しています。
私の情報源 (上記のリンク) を参照すると、これらのソリューションで適切に機能しない理由を見つけることができるでしょう。