package server;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class MarsServer extends Thread {
public static final int PORT = 8765;
public static final String book = "autobiography.txt";
private Socket socket;
private BufferedReader in;
private PrintWriter out;
private static PrintWriter fileOut;
public MarsServer(Socket s) throws IOException {
socket = s;
InputStream socketInput = socket.getInputStream();
InputStreamReader socketReader = new InputStreamReader(socketInput);
in = new BufferedReader(socketReader);
OutputStream socketOutput = socket.getOutputStream();
OutputStreamWriter socketWriter = new OutputStreamWriter(socketOutput);
BufferedWriter bufferedWriter = new BufferedWriter(socketWriter);
out = new PrintWriter(bufferedWriter, true);
start();
}
public void run() {
while (true) {
try {
String str = in.readLine();
if (str.equals("q"))
break;
fileOut.println(str);
out.println("server send:" + str);
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println("closing socket...");
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
ServerSocket s = new ServerSocket(PORT);
System.out.println("[server]");
System.out.println("Started: " + s);
System.out.println("Server Started");
try {
FileWriter fileWriter = new FileWriter(book);
BufferedWriter bufferedFileWriter = new BufferedWriter(fileWriter);
fileOut = new PrintWriter(bufferedFileWriter, true);
while (true) {
Socket socket = s.accept();
try {
new MarsServer(socket);
} catch (IOException e) {
socket.close();
}
}
} finally {
fileOut.close();
System.out.println("closing ServerSocket...");
s.close();
}
}
}
package client;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import server.MarsServer;
public class MarsClient extends Thread {
private Socket socket;
private BufferedReader in;
private PrintWriter out;
private String id;
public MarsClient(InetAddress addr, String id) throws IOException {
this.id = id;
System.out.println("Making client " + id);
socket = new Socket(addr, MarsServer.PORT);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
start();
}
public void run() {
try {
for (int i = 0; i < 100; i++) {
out.println("Client " + id + ": " + i);
String str = in.readLine();
System.out.println(str);
}
out.println("q");
} catch (IOException e) {
System.out.println(e);
}
}
static final int MAX_THREADS = 2;
public static void main(String[] args) throws IOException, InterruptedException {
InetAddress addr = InetAddress.getByName(null);
System.out.println("[client]");
System.out.println("addr = " + addr);
new MarsClient(addr, 1 + "");
//Thread.sleep(100);
new MarsClient(addr, 2 + "");
}
}