Lập trình mạng bằng java những điều cơ bản

3 min read

Networking

Lập trình mạng là gì

Lập trình mạng liên quan đến việc thiết kế, phát triển, và quản lý các ứng dụng và hệ thống mạng, cho phép các thiết bị và ứng dụng giao tiếp với nhau qua mạng máy tính như Web, Mail, Skype, Zalo,…

Socket

Socket là một điểm cuối để giao tiếp giữa hai máy tính thông qua mạng. Nó là một trong những công cụ cơ bản nhất trong lập trình mạng.

Socket cho phép thiết lập các kênh giao tiếp mà hai đầu kênh được đánh dấu bởi hai cổng (port). Thông qua các cổng này một quá trình có thể nhận và gởi dữ liệu với các quá trình khác.

ServerSocket

ServerSocket là một lớp trong lập trình mạng, đặc biệt được sử dụng trong Java, để tạo một socket server. ServerSocket chịu trách nhiệm lắng nghe các kết nối từ client, chấp nhận các kết nối đó và tạo ra một socket cụ thể để giao tiếp với client.

Protocol

Một giao thức (Protocal) là một bộ các quy tắc cơ bản, mà các ứng dụng phải tuân thủ để giao tiếp. Ví dụ: giao thức TCP, FTP, Telnet, SMTP, POP, …

TCP (Transmission Control Protocol)

Là giao thức kết nối hướng trạng thái, đảm bảo việc truyền dữ liệu được thực hiện đáng tin cậy và theo thứ tự. TCP socket phù hợp cho các ứng dụng yêu cầu độ tin cậy cao, chẳng hạn như HTTP, FTP.

TCP/IP “số điện thoại” là sự kết hợp của IP Address và Port.

UDP (User Datagram Protocol)

Là giao thức không kết nối, không đảm bảo việc truyền dữ liệu có thứ tự hay đáng tin cậy. UDP socket phù hợp cho các ứng dụng yêu cầu tốc độ cao và chấp nhận mất mát dữ liệu, chẳng hạn như truyền phát video, trò chơi trực tuyến.

IP Address

Ngoài số hiệu cổng, hai bên giao tiếp còn phải biết địa chỉ IP của nhau. Địa chỉ IP giúp phân biệt máy tính này với máy tính kia trên mạng TCP/IP. Trong khi số hiệu cổng dùng để phân biệt các quá trình khác nhau trên cùng một máy tính.

Địa chỉ IP (IP Address) là một số duy nhất được gán cho một nút của mạng, ví dụ: 192.168.0.1. Nó bao gồm các số thập phân trong khoảng từ 0 đến 255.

InetAddress
Đại diện cho một địa chỉ IP, ví dụ chúng ta muốn xem địa chỉ IP của google.com

InetAddress google = InetAddress.getByName("google.com");
System.out.println(google);
// google.com/142.251.130.14

Gọi và nhấc máy

Gọi – Tạo cuộc gọi

import java.io.*;
import java.net.*;

public class Client {
public static void main(String[] args) throws IOException {
Socket socket = null;
try {
socket = new Socket();
InetAddress localhost = InetAddress.getByName("localhost");
InetSocketAddress inetSocketAddress = new InetSocketAddress(localhost, 8080);
socket.connect(inetSocketAddress);
        System.out.println("Client info: " + socket);
        // Client info: Socket[addr=localhost/127.0.0.1,port=8080,localport=57884]
    } finally {
        if (socket != null) {
            socket.close();
        }
    }
}}

Sử dụng Socket để tạo kết nối TCP tới địa chỉ localhost:8080

Nhấc máy – Chấp nhận cuộc gọi

import java.io.*;
import java.net.*;

public class Server {
   public static void main(String[] args) throws IOException {
       ServerSocket serverSocket = null;
       try {
            serverSocket = new ServerSocket();
            InetAddress inetAddress = InetAddress.getByName("0.0.0.0");
            SocketAddress socketAddress = new InetSocketAddress(inetAddress, 8080);
            serverSocket.bind(socketAddress);   
            Socket clientSocket = serverSocket.accept();
            System.out.println("Connected : " + clientSocket);
   // Connected to client: Socket[addr=/127.0.0.1,port=57884,localport=8080]
    } finally {
        if (serverSocket != null) {
            serverSocket.close();
        }
    }
}

}

Gán (bind) cho ServerSocket lắng nghe kết nối TCP trên địa chỉ 0.0.0.0:8080. Địa chỉ 0.0.0.0 đại diện cho tất cả địa chỉ, có nghĩa là ServerSocket sẽ lắng nghe mọi kết nối TCP trên cổng 8080.

Khi có cuộc gọi tới, ServerSocket có thể chấp nhận cuộc gọi bằng accpet() .

Tham khảo: https://gpcoder.com/3664-lap-trinh-mang-voi-java/

Avatar photo

Leave a Reply

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