Gửi chuỗi lên Server và trả về chuỗi đảo ngược cho Client

Viết chương trình tạo ra một máy chủ TCP đơn giản, chờ đợi kết nối từ một client, và sau đó đảo ngược chuỗi được gửi từ client và gửi chuỗi đảo ngược cho client.

Xem thêm:

ứng dụng chat client server java socket

delete file trong java

1. Mô tả bài toán

Đề bài: Viết chương trình gửi tin nhắn hai chiều giữa client-server sử dụng TCP socket:

  • Client gửi 1 chuỗi ký tự bất kỳ đến server.
  • Server nhận và gửi chuỗi đảo ngược về client.
  • Client xuất kết quả ra console, chương trình kết thúc khi client gửi chuỗi bye.

Video hướng dẫn chi tiết:

2. Code tham khảo

2.1 Code phía Server java

– Mở cổng và chờ kết nối từ client:

Máy chủ mở một ServerSocket trên một cổng cố định (được xác định bởi SERVER_PORT) và chờ đợi kết nối từ một client.

– Xác nhận kết nối từ client:

Khi có một client kết nối thành công, máy chủ xác nhận kết nối bằng cách kiểm tra trạng thái của socket với isConnected().

– Đảo ngược chuỗi từ client:

Máy chủ nhận dữ liệu từ client, đảo ngược chuỗi đó bằng cách sử dụng phương thức reversrString().

– Gửi chuỗi đảo ngược lại cho client:

Máy chủ gửi chuỗi đã đảo ngược về client thông qua cùng một kết nối socket.

public class Server {
    
    public final static int SERVER_PORT = 9555;
    
    public static void main(String[] args) {
        
        try {
            System.out.println("Waiting Connected!");
            
            // Mo cong
            ServerSocket serverSocket = new ServerSocket(SERVER_PORT);
            
            //Kiem tra client ket noi
            Socket socket = serverSocket.accept();
            boolean status = socket.isConnected();
            
            if(status){
                System.out.println("Client Connected!");
                
                while(status){
                    //Nhan du lieu tu Client
                    Scanner in = new Scanner(socket.getInputStream());
                    
                    if(in.hasNextLine()){
                        String intStr = in.nextLine();
                        String reverseStr = reversrString(intStr);
                        
                        //Gui chuoi dao nguoc ve client
                        PrintWriter out = new PrintWriter(socket.getOutputStream(),true);
                        out.println(reverseStr);
                    }
                    
                }
            }else{
                System.out.println("Connect Fail!");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    public static String reversrString(String str){
        
        if(str == null){
            return str;
        }
        
        String reverse = "";
        
        for(int i = str.length()-1;i>=0;i--){
            reverse = reverse + str.charAt(i);
        }
        return reverse;
    }
}

2.2 Code phía Client java

– Kết nối đến máy chủ:

Client kết nối đến máy chủ thông qua một socket, sử dụng địa chỉ IP và cổng được chỉ định (SERVER_IP và SERVER_PORT).

– Gửi dữ liệu tới máy chủ:

Client cho phép người dùng nhập một chuỗi từ bàn phím, sau đó gửi chuỗi này tới máy chủ thông qua kết nối socket.

– Nhận dữ liệu từ máy chủ:

Client nhận dữ liệu từ máy chủ thông qua kết nối socket. Trong trường hợp này, nó nhận một chuỗi đã được đảo ngược từ máy chủ.

– Hiển thị kết quả:

Sau khi nhận dữ liệu từ máy chủ, client in ra kết quả được nhận.

public class Client {
    
    public final static int SERVER_PORT = 9555;
    public final static String SERVER_IP = "localhost";
    
    public static void main(String[] args) {
        try {
            String mess = "";
            String result = "";
            
            System.out.println("Connecting to Server!");
            
            Socket socket = new Socket(SERVER_IP, SERVER_PORT);
            
            boolean status = socket.isConnected();
            if(status){
                System.out.println("Connect Successfully!");
            }
            
            while (status) {                
                System.out.println("Nhap chuoi: ");
                Scanner sc = new Scanner(System.in);
                mess = sc.nextLine();
                
                //Gui chuoi len server
                PrintWriter outStr = new PrintWriter(socket.getOutputStream(), true);
                outStr.println(mess);
                
                //Nhan ket qua tu Server
                Scanner in = new Scanner(socket.getInputStream());
                result = in.nextLine();
                
                System.out.println("Ket qua: "+result);
            }
            socket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        
    }
}

Trên đây là code chương trình java nhận chuỗi từ client và server thực hiện đảo chuỗi và gửi lại cho client. Cảm ơn bạn đã tham khảo bài tập lập trình mạng trên ttnguyen.net.

Bài viết liên quan:

mô hình TCP/IP khái niệm và chức năng

so sánh mô hình tcp/ip và mô hình osi

Lớp URL trong java

InetAddress trong java

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em