Я обычно в .net Dev (не бейте меня!), Так что простите любые действительно глупые ошибки, которые я сделал здесь :)Groovy TCP клиент висит
У меня есть TCP слушателя, написанный на .net, который получает 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();
Я отладка в затмении, и она висит на линии withStreams. То, что я должен получить, - сообщение «Сообщение не было XML», которое я могу получить через telnet.
Любые идеи, что я делаю неправильно?
Update Я просто попытался это вместо закрытия 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() вызов
Update снова
Оказалось, что это была проблема с тем, как удаленная служба закрывалась (или больше - не было закрытие) поток. Оба .net и наш мейнфрейм обрабатывали его правильно, но отличный скрипт был недоволен. Я исправил эту услугу, и сценарий работает счастливо сейчас, поэтому стоит учитывать, что кто-то еще сталкивается с чем-то подобным.
Моя догадка сервер держит соединение открытым, так что читатель буферизация Безразлично Не знаю, что хорошо вернуться (и блокирует ожидание большего количества данных). Кроме того, должен ли '' Hello test server '' быть перед извлечением responseText? –
хорошо, но могут быть плохие сервисы или сломанные соединения. так, в groovy, как реализовать тайм-аут, прочитанный для надежного клиента? – Massimo