Socket s = new Socket( "127.0.0.1", 80 ); InputStream istream = s.getInputStream(); OutputStream ostream = s.getOutputStream(); String request = "GET http://localhost/test.pl HTTP/1.1\nHost: localhost\n\n"; ostream.write(request.getBytes()); ostream.flush(); byte buf[] = new byte[10000]; int cur_len = 0; do { cur_len = istream.read( buf, cur_len, buf.length - cur_len ); } while( cur_len > 0 ); String sss = new String(buf) System.out.println(sss);
Этот код выводит на java-консоль результат некоего PERL скрипта. Он прекрасно работает но... только 1 раз!.
Тоесть если еще раз послать запрос GET к томуже скрипту, или к другому, неважно, то istream.read сразу возвращает 0 байт прочитано, и всё :(. Приходится закрывать сокет s.close() и снова открывать его т.е. s = new Socket( "127.0.0.1", 80 );
Вопрос - я чтото не так делаю, или сокет и должен быть одноразовым, и для каждого запроса его переоткрывать надо?
З.Ы. пробовал под localhost Apache и IIS5.1, а также на fatal.ru - результат один :(