For the first case you would be better off passing a sequence of string.
Code:
sequence<string> StringSeq;
You can find some predefined sequence types in slice/Ice/BuiltinSequences.ice.
For the second case you'd have to define some interface through which the server streams the data. Something like:
Code:
// Slice
sequence<byte> ByteSeq;
interface Stream
{
void send(ByteSeq data);
};
interface Server
{
void startStreaming(Stream* s);
};
In your client you would supply a proxy to a stream object to the server, and the server would call on the stream object passing the data as a series of byte sequences to the client.