Đề
bài: Tạo ra hai ứng dụng độc lập (một client và một
server). Client chấp nhận một trong các số sau: 1, 2, 3. Số này sẽ được gửi đến
server. Server sẽ trả lại tương ứng : “ONE” hoặc “TWO” hoặc “THREE” (tùy theo
số nhận được). Dùng giao thức TCP/IP
Chức
năng chương trình:
-
Client gửi số bất kì đến SERVER
-
Nếu là số 1,2,3 thì trả về
ONE,TWO,THREE, các trường hợp còn lại trả về UNKNOWN
Cơ
chế:
-
SERVER mở cổng để client truy
xuất đến
-
Tạo các luồng nhập xuất khi có
client truy cập đến (cả client và SERVER), lúc này client và server có thể gửi
thông tin qua lại lẫn nhau
-
Client truy cập vào, sau đó gửi
thông tin đến server
-
Server nhận được thông tin, rồi
xử lí, sau đó gửi trả lại client
-
Client hiển thị thông tin mà
server đã trả về
Các
lớp và chức năng các lớp:
NumberTCPSimpleServer
-
Lớp này có phương thức go(),
chức năng của nó:
o
Mở cổng của server, tạo kết nối
mỗi khi có client kết nối
o
Chờ nhận dữ liệu từ Client gửi
lên
o
Xử lí dữ liệu
o
Trả về client
-
Phương thức main của lớp này
tạo ra đối tượng thuộc lớp NumberTCPSimpleServer, sau đó gọi phương thức go()
của lớp này
NumberTCPSimpleClient
-
Phương thức khởi tạo của lớp
này có đối số là chuỗi về địa chỉ của server
-
Phương thức go():
o
Tạo kết nối đến địa chỉ và số
hiệu cổng của server
o
Tạo các luồng nhập xuất liên
kết với server
o
Đưa dữ liệu cần gửi hoặc nhận
vào các luồng này
o
Gửi dữ liệu đến server
o
Nhận dữ liệu (sau khi server đã
xử lí) rồi hiển thị lên màn hình
Kết quả:
SERVER
Client
NumberTCPSimpleServer
import java.io.*;
import java.net.*;
class NumberTCPSimpleServer{
private ServerSocket sSoc;
public static final int PORT = 8000;public static void main(String args[]){
NumberTCPSimpleServer server = new NumberTCPSimpleServer();
try {
server.go();
}
catch(IOException e){
e.printStackTrace(); }
catch(ClassNotFoundException e){
e.printStackTrace(); }
}
public void go() throws IOException, ClassNotFoundException{
Socket soc = null;
sSoc = new ServerSocket(PORT);
while(true)
{
//creating a Socket
System.out.println("Server is waitting...");
soc = sSoc.accept();
System.out.println("A Socket was instantiated");
//creating an OutputStream object
OutputStream os = soc.getOutputStream();
//creating an ObjectOutputStream object
ObjectOutputStream oos = new ObjectOutputStream(os);
//creating an InputStream object
InputStream is = soc.getInputStream();
//creating an ObjectOutputStream object
ObjectInputStream ois = new ObjectInputStream(is);
String received = (String)ois.readObject();
String returned = null;
if(received.equals("1")){
returned = "ONE";
}
else{
if(received.equals("2")){
returned = "TWO"; }
else{
if(received.equals("3")) {
returned = "THREE"; }
else
{
returned = "UNKNOWN"; }
}
}
oos.writeObject(returned);
ois.close();
oos.close();
soc.close();
}
}
}
import java.net.*;
class NumberTCPSimpleServer{
private ServerSocket sSoc;
public static final int PORT = 8000;public static void main(String args[]){
NumberTCPSimpleServer server = new NumberTCPSimpleServer();
try {
server.go();
}
catch(IOException e){
e.printStackTrace(); }
catch(ClassNotFoundException e){
e.printStackTrace(); }
}
public void go() throws IOException, ClassNotFoundException{
Socket soc = null;
sSoc = new ServerSocket(PORT);
while(true)
{
//creating a Socket
System.out.println("Server is waitting...");
soc = sSoc.accept();
System.out.println("A Socket was instantiated");
//creating an OutputStream object
OutputStream os = soc.getOutputStream();
//creating an ObjectOutputStream object
ObjectOutputStream oos = new ObjectOutputStream(os);
//creating an InputStream object
InputStream is = soc.getInputStream();
//creating an ObjectOutputStream object
ObjectInputStream ois = new ObjectInputStream(is);
String received = (String)ois.readObject();
String returned = null;
if(received.equals("1")){
returned = "ONE";
}
else{
if(received.equals("2")){
returned = "TWO"; }
else{
if(received.equals("3")) {
returned = "THREE"; }
else
{
returned = "UNKNOWN"; }
}
}
oos.writeObject(returned);
ois.close();
oos.close();
soc.close();
}
}
}
NumberTCPSimpleClient
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.Socket;
//import java.util.Scanner;
class NumberTCPSimpleClient{
public static final int DT_PORT = 8000;
String hostName;
Socket soc;
public static void main(String args[]){
NumberTCPSimpleClient client = new NumberTCPSimpleClient("localhost");
try{
//System.out.print("run: ");
//Scanner input =new Scanner(System.in);
//String i = input.nextLine();
//sendData = i.getBytes();
//client.go(i);
client.go("1");
client.go("2");
client.go("3");
client.go("4");
}
catch(IOException e){
e.printStackTrace();
}
catch(ClassNotFoundException e){
e.printStackTrace();
}
}
public NumberTCPSimpleClient(String hostString){
this.hostName = hostString;
}
public void go(String str) throws IOException, ClassNotFoundException{
soc = new Socket(hostName, DT_PORT);
//creating an InputStream that will be connected to soc
InputStream is = soc.getInputStream();
//creating ObjectInputStream
ObjectInputStream ois = new ObjectInputStream(is);
//creating an OutputStream that will be connected to soc
OutputStream os = soc.getOutputStream();
//creating ObjectOutputStream
ObjectOutputStream oos = new ObjectOutputStream(os);
//sending data to server
oos.writeObject(str);
System.out.println(str+" was sent");
//receiving data from server
String temp = (String)ois.readObject();
System.out.println(temp + " was received");
oos.close();
ois.close();
soc.close();
}
}
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.Socket;
//import java.util.Scanner;
class NumberTCPSimpleClient{
public static final int DT_PORT = 8000;
String hostName;
Socket soc;
public static void main(String args[]){
NumberTCPSimpleClient client = new NumberTCPSimpleClient("localhost");
try{
//System.out.print("run: ");
//Scanner input =new Scanner(System.in);
//String i = input.nextLine();
//sendData = i.getBytes();
//client.go(i);
client.go("1");
client.go("2");
client.go("3");
client.go("4");
}
catch(IOException e){
e.printStackTrace();
}
catch(ClassNotFoundException e){
e.printStackTrace();
}
}
public NumberTCPSimpleClient(String hostString){
this.hostName = hostString;
}
public void go(String str) throws IOException, ClassNotFoundException{
soc = new Socket(hostName, DT_PORT);
//creating an InputStream that will be connected to soc
InputStream is = soc.getInputStream();
//creating ObjectInputStream
ObjectInputStream ois = new ObjectInputStream(is);
//creating an OutputStream that will be connected to soc
OutputStream os = soc.getOutputStream();
//creating ObjectOutputStream
ObjectOutputStream oos = new ObjectOutputStream(os);
//sending data to server
oos.writeObject(str);
System.out.println(str+" was sent");
//receiving data from server
String temp = (String)ois.readObject();
System.out.println(temp + " was received");
oos.close();
ois.close();
soc.close();
}
}





0 comments:
Post a Comment