Revise
Revise
package Asm1;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
while (true) {
Socket clientSocket = serverSocket.accept();
System.out.println("Connected to client: " +
clientSocket.getInetAddress());
try (
BufferedReader in = new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
OutputStream out = clientSocket.getOutputStream()
) {
String inputLine;
while ((inputLine = in.readLine()) != null) {
int num = Integer.parseInt(inputLine);
int result = num * num;
out.write((result + "\n").getBytes());
}
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
package Asm1;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
Asm2: Write a program that has 2 sides: client and server, they communicate to each other
using TCP socket.
A server that:
- can accept connect from MULTIPLE clients.
- receives integer number n from client.
- calculates the value of square of n.
- and sends back square of n to client.
A client that:
- can connect to server.
- sends an integer number n to server.
- and receives square of n from server.
package Asm2;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
while (true) {
Socket clientSocket = serverSocket.accept();
System.out.println("New client connected: " + clientSocket);
@Override
public void run() {
try (
BufferedReader reader = new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
BufferedWriter writer = new BufferedWriter(new
OutputStreamWriter(clientSocket.getOutputStream()))
) {
String inputLine;
while ((inputLine = reader.readLine()) != null) {
try {
int n = Integer.parseInt(inputLine);
int square = n * n;
package Asm2;
import java.io.*;
import java.net.Socket;
} catch (IOException e) {
System.err.println("Error: " + e.getMessage());
}
}
}
Asm3:
package Asm3;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.nio.ByteBuffer;
while (true) {
byte[] receiveData = new byte[8];
DatagramPacket receivePacket = new DatagramPacket(receiveData,
receiveData.length);
serverSocket.receive(receivePacket);
package Asm3;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.nio.ByteBuffer;
while (true) {
System.out.print("Please enter a real number: ");
String userInput = inFromUser.readLine();
double realNumber = Double.parseDouble(userInput);
Mid-term : At server:
1. Server listens to the connection from clients and accepts them.
2. For each client, server has to create a thread that will maintain the connection with that client
(print out a message to screen each time server accepts a connection).
3. After accepting connection from client, server receives the first client’s message that is
[Student_ID]. Server calculates the 4 times of [Student_ID] and sends that value back to client.
(You should use BigInteger
4. Server does the loop:
Server receives the client’s message:
- If that message is a positive integer number, server calculates [number]4 and sends that value
back to client (You should use BigInteger).
- If that message is not a positive integer number, server just sends the client's message back to
client.
At client:
1. Client creates a connection to server.
2. After connecting successfully to server, client sends to server the first message that is
[Student_ID], then reads the 1st reply from server (4x[Student_ID]) and prints it out to the
screen.
3. Client does the following loop:
Client continues to read a message from user keyboard and sends that message to server.
If the message read from keyboard is an integer number, client prepares to receive a message
from server that is [number]4 and prints out to the client's screen
Otherwise, client just receives message from server and prints it out to the screen.
import java.io.*;
import java.net.*;
import java.math.BigInteger;
@Override
public void run() {
try {
BufferedReader in = new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(),
true);
while (true) {
String clientMessage = in.readLine();
try {
BigInteger number = new BigInteger(clientMessage);
if (number.signum() <0) {
out.println(clientMessage);
} else {
BigInteger power4 = number.pow(4);
out.println(power4.toString());
}
} catch (NumberFormatException e) {
out.println(clientMessage);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
try {
ServerSocket serverSocket = new ServerSocket(port);
System.out.println("System listening on port " + port);
while (true) {
Socket clientSocket = serverSocket.accept();
System.out.println("Accepted connection from client: " +
clientSocket.getInetAddress());
Thread clientThread = new ClientHandler(clientSocket);
clientThread.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.io.*;
import java.net.*;
import java.util.Scanner;
try {
Socket socket = new Socket(serverAddress, serverPort);
System.out.println("Connected to server.");
out.println(studentId);
response = in.readLine();
System.out.println("Response from server: " + response);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.math.BigInteger;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
try {
DatagramSocket serverSocket = new DatagramSocket(port);
System.out.println("Server listening on port " + port);
while (true) {
DatagramPacket receivePacket = new
DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
try {
BigInteger number = new BigInteger(clientMessage);
package UDPsocket;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;
try {
DatagramSocket socket = new DatagramSocket();
InetAddress serverAddressInet =
InetAddress.getByName(serverAddress);
// Step 2: Receive and print the 1st reply from the server
(4x[Student_ID])
byte[] receiveData = new byte[1024];
DatagramPacket receivePacket = new DatagramPacket(receiveData,
receiveData.length);
socket.receive(receivePacket);