hi,
I'm trying to use RCommandClient as an rsh client. it seems to be
working fine, except for when I want to pipe input to a remote process
through the output stream retrieved from
RCommandClient.getOutputStream(). the problem is that I can't send and
EOF to the the remote process by closing this stream, because that
results in the socket getting closed. so the remote process never
completes - it hangs waiting for an EOF - or it ends when I close the
stream, but I can't read its output because the socket gets closed.
rock and a hard place, so to speak :)
I can "fix" this by subclassing RCommandClient and returning a an output
stream proxy that actually does a Socket.shutdownOutput() rather than
OutputStream.close() (see code below), but this seems like something
that ought to work out of the box. I am just missing something?
thanks,
kevin.
--- workaround class ---
class Rsh
extends RCommandClient
{
class OutputProxy extends OutputStreamProxy
{
private Socket mySocket;
OutputProxy(OutputStream target, Socket socket)
{
super(target);
mySocket = socket;
}
public void close()
throws IOException
{
mySocket.shutdownOutput();
}
}
OutputStream myOutput;
Rsh()
{
}
public OutputStream getOutputStream()
{
if (myOutput == null)
{
myOutput = new OutputProxy(_output_, _socket_);
}
return myOutput;
}
}
--
To unsubscribe, e-mail: <mailto:commons-dev-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:commons-dev-help@;jakarta.apache.org>