mirror of
https://github.com/corda/corda.git
synced 2025-01-03 19:54:13 +00:00
9bb3d6b972
git-subtree-dir: sgx-jvm/avian git-subtree-mainline:f978eab8d1
git-subtree-split:09e4fe60d0
74 lines
2.0 KiB
Java
74 lines
2.0 KiB
Java
package extra;
|
|
|
|
import java.net.InetSocketAddress;
|
|
import java.nio.ByteBuffer;
|
|
import java.io.IOException;
|
|
import java.nio.channels.Selector;
|
|
import java.nio.channels.SelectionKey;
|
|
import java.nio.channels.SocketChannel;
|
|
import java.io.OutputStream;
|
|
import java.io.FileInputStream;
|
|
|
|
public class SendFile {
|
|
private static class SocketOutputStream extends OutputStream {
|
|
private final SocketChannel channel;
|
|
private final Selector selector;
|
|
public SocketOutputStream(String host, int port) throws Exception {
|
|
channel = SocketChannel.open();
|
|
channel.connect(new InetSocketAddress(host, port));
|
|
channel.configureBlocking(false);
|
|
selector = Selector.open();
|
|
channel.register(selector, SelectionKey.OP_WRITE, null);
|
|
}
|
|
|
|
public void close() throws IOException {
|
|
channel.close();
|
|
}
|
|
|
|
public void write(int c) {
|
|
throw new RuntimeException("Do not use!");
|
|
}
|
|
public void write(byte[] buffer, int offset, int length)
|
|
throws IOException {
|
|
ByteBuffer buf = ByteBuffer.wrap(buffer);
|
|
buf.position(offset);
|
|
buf.limit(offset+length);
|
|
while (buf.hasRemaining()) {
|
|
selector.select(10000);
|
|
for (SelectionKey key : selector.selectedKeys()) {
|
|
if (key.isWritable() && (key.channel() == channel)) {
|
|
channel.write(buf);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void sendFile(String file, String host, int port)
|
|
throws Exception {
|
|
System.out.println("Sending " + file);
|
|
OutputStream os = new SocketOutputStream(host, port);
|
|
FileInputStream is = new FileInputStream(file);
|
|
byte[] buf = new byte[16384];
|
|
int count=-1;
|
|
while ((count = is.read(buf)) >= 0) {
|
|
os.write(buf, 0, count);
|
|
}
|
|
is.close();
|
|
os.close();
|
|
}
|
|
|
|
public static void main(String args[]) {
|
|
if (args.length != 2) {
|
|
System.out.println("Usage: SendFile file host");
|
|
} else {
|
|
try {
|
|
sendFile(args[0], args[1], 8988);
|
|
} catch (Exception ex) {
|
|
ex.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|