Skip to content
Snippets Groups Projects
Commit 6067cb7e authored by Chao Zhan's avatar Chao Zhan
Browse files

add new exercise

parent b85a11ca
Branches
No related tags found
No related merge requests found
package Client;
import java.io.PrintStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.net.Socket;
public class TCPClient {
public static void main(String args[]) throws IOException {
int PORT = 12345;
String HOST = "127.0.0.1";
Socket socket = new Socket(HOST, PORT);
PrintStream out = new PrintStream(socket.getOutputStream());
// BufferedReader reads Keyboard Input
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
while (true) { // ^D will close dialogue
System.out.print("> ");
String message = keyboard.readLine();
if (message == null)
break;
out.println(message);
String answer = in.readLine();
System.out.println("echo: " + answer);
}
in.close();
keyboard.close();
out.close();
socket.close();
}
}
package Server;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TCPServer {
public static void main(String args[]) throws IOException {
int PORT = 12345;
ServerSocket listen = new ServerSocket(PORT); // set port
System.out.printf("Listening on the port: %d\n", PORT);
while (true) { // non-terminating server
Socket socket = listen.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintStream out = new PrintStream(socket.getOutputStream());
while (true) { // end of input stream will close dialogue
String message = in.readLine();
if (message == null) {
break;
}
String answer = message.replace('i', 'o');
out.println(answer);
}
in.close();
out.close();
socket.close(); // close connection
System.out.println("Socket closed.");
}
}
}
JFLAGS = -g
JC = javac
JVM= java
.SUFFIXES: .java .class
.java.class:
$(JC) $(JFLAGS) $*.java
MAIN = SynchronizedCounter
CLASSES = SynchronizedCounter.java
default: classes
classes: $(CLASSES:.java=.class)
.PHONY: run clean
run: $(MAIN).class
$(JVM) $(MAIN)
clean:
$(RM) *.class
class Count {
// synchronized block
synchronized void displayCounting(int n, int threadId) {
for (int i = 1; i <= n; i++) {
System.out.printf("Thread %d: %d\n", threadId, i);
try {
// sleep for 500 milliseconds
Thread.sleep(500);
} catch (Exception e) {
System.out.println(e);
}
}
}
}
// Thread 1
class Thread_A extends Thread {
Count c;
Thread_A(Count c) {
this.c = c;
}
public void run() {
c.displayCounting(5, 1);
}
}
// Thread 2
class Thread_B extends Thread {
Count c;
Thread_B(Count c) {
this.c = c;
}
public void run() {
c.displayCounting(5, 2);
}
}
public class SynchronizedCounter {
public static void main(String args[]) {
Count obj = new Count();
Thread_A t1 = new Thread_A(obj);
Thread_B t2 = new Thread_B(obj);
t1.start();
t2.start();
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment