89. Lập trình mạng trong java

Lập trình mạng trong Java là quá trình xây dựng các ứng dụng mạng sử dụng ngôn ngữ Java để truyền thông tin giữa các máy tính thông qua mạng. Java cung cấp nhiều gói và lớp hỗ trợ lập trình mạng, cho phép bạn thực hiện các hoạt động như gửi và nhận dữ liệu qua giao thức TCP/IP hoặc UDP, tạo các kết nối mạng, lắng nghe các yêu cầu từ các máy khách, v.v.

Dưới đây là một số ví dụ về cách thực hiện lập trình mạng trong Java:

  1. Gửi và nhận dữ liệu qua giao thức TCP/IP (Socket Programming):
java
import java.io.*;
import java.net.*;

public class TCPServer {
    public static void main(String[] args) throws IOException {
        // Tạo một SocketServer lắng nghe kết nối từ máy khách
        ServerSocket serverSocket = new ServerSocket(12345);

        System.out.println("Đang lắng nghe kết nối...");

        // Chấp nhận kết nối từ máy khách
        Socket clientSocket = serverSocket.accept();

        System.out.println("Đã kết nối với máy khách: " + clientSocket.getInetAddress());

        // Lấy luồng vào/ra dữ liệu từ Socket
        BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
        PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);

        // Đọc dữ liệu từ máy khách và gửi trả lời
        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            System.out.println("Nhận từ máy khách: " + inputLine);
            out.println("Đã nhận: " + inputLine);
        }

        // Đóng luồng và kết nối
        in.close();
        out.close();
        clientSocket.close();
        serverSocket.close();
    }
}
  1. Kết nối tới một máy chủ thông qua giao thức TCP/IP:
java
import java.io.*;
import java.net.*;

public class TCPClient {
    public static void main(String[] args) throws IOException {
        // Kết nối tới máy chủ với địa chỉ IP và cổng cụ thể
        Socket socket = new Socket("127.0.0.1", 12345);

        // Lấy luồng vào/ra dữ liệu từ Socket
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

        // Gửi dữ liệu tới máy chủ
        out.println("Xin chào máy chủ!");

        // Đọc phản hồi từ máy chủ và in ra màn hình
        String response = in.readLine();
        System.out.println("Phản hồi từ máy chủ: " + response);

        // Đóng luồng và kết nối
        in.close();
        out.close();
        socket.close();
    }
}
  1. Gửi và nhận dữ liệu qua giao thức UDP:
java
import java.io.*;
import java.net.*;

public class UDPClient {
    public static void main(String[] args) throws IOException {
        DatagramSocket socket = new DatagramSocket();

        String message = "Xin chào máy chủ!";
        byte[] sendData = message.getBytes();
        InetAddress serverAddress = InetAddress.getByName("127.0.0.1");
        int serverPort = 12345;

        DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, serverAddress, serverPort);
        socket.send(sendPacket);

        byte[] receiveData = new byte[1024];
        DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
        socket.receive(receivePacket);

        String response = new String(receivePacket.getData(), 0, receivePacket.getLength());
        System.out.println("Phản hồi từ máy chủ: " + response);

        socket.close();
    }
}

public class UDPServer {
    public static void main(String[] args) throws IOException {
        DatagramSocket socket = new DatagramSocket(12345);

        byte[] receiveData = new byte[1024];
        DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
        socket.receive(receivePacket);

        String message = new String(receivePacket.getData(), 0, receivePacket.getLength());
        System.out.println("Nhận từ máy khách: " + message);

        String response = "Đã nhận: " + message;
        byte[] sendData = response.getBytes();
        InetAddress clientAddress = receivePacket.getAddress();
        int clientPort = receivePacket.getPort();

        DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, clientAddress, clientPort);
        socket.send(sendPacket);

        socket.close();
    }
}

Trên đây là một số ví dụ đơn giản về lập trình mạng trong Java bằng sử dụng các giao thức TCP/IP và UDP. Trong thực tế, lập trình mạng có thể liên quan đến nhiều tác vụ phức tạp hơn như xử lý kết nối đồng thời từ nhiều máy khách, tạo máy chủ nhiều luồng (multithreading server), xử lý giao thức HTTP, và nhiều nhiệm vụ khác.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top