4/15/12

Server sẽ trả lại tương ứng(tùy theo số nhận được). Dùng giao thức TCP/IP

Đề 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();
        }
    }
}
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();
        }
    }
Bookmark and Share

0 comments:

Post a Comment

Next previous home

Cộng đồng yêu thiết kế Việt Nam Thiet ke website, danang