|
Flexible Design
Listing 1. The Receiver and Sender classes can readily incorporate encrypted communication through their use of socket factories. package example;
import java.io.*;
import java.net.*;
import javax.net.*;
public class Receiver {
private ServerSocketFactory factory;
private int port;
private byte[] buffer;
public Receiver(int port) {
setPort(port);
setServerSocketFactory(
ServerSocketFactory.getDefault());
buffer = new byte[2048];
}
public Receiver() {
this(0);
}
public void setPort(int port) {
this.port = port;
}
public void setServerSocketFactory(
ServerSocketFactory factory) {
this.factory = factory;
}
public void receive(
OutputStream out) throws IOException {
int bytes;
ServerSocket server;
Socket client;
InputStream in;
server = factory.createServerSocket(port);
client = server.accept();
in = client.getInputStream();
while((bytes = in.read(buffer)) >= 0)
out.write(buffer, 0, bytes);
client.close();
server.close();
}
}
|