Lập trình mạng với java
Lập trình mạng với java
Lập trình mạng với java là gì? Tạo ra các ứng dụng làm việc với nhau thông qua môi trường mạng, ví dụ như ứng dụng chat Skype, ứng dụng Zalo, … như thế nào?
Bài viết dưới đây của R2S sẽ giúp bạn hiểu sâu hơn về các hệ thống mạng khác nhau cùng hoạt động thông qua các môi trường mạng như mạng LAN, mạng WAN hay mạng Internet, gửi và nhận dữ liệu qua lại với nhau dựa trên kết nối đó.
Lập trình mạng với java là gì?
Lập trình mạng với Java là việc sử dụng ngôn ngữ lập trình Java để phát triển ứng dụng mạng. Java cung cấp một số gói (package) và lớp (class) trong gói java.net để xây dựng và quản lý các kết nối mạng, truyền thông qua các giao thức mạng như TCP/IP, UDP, HTTP, v.v.
Với Java, bạn có thể thực hiện các công việc như:
1. Tạo và kết nối với socket để truyền thông qua TCP/IP hoặc UDP.
2. Gửi dữ liệu và nhận dữ liệu qua socket.
3. Xây dựng và quản lý các mạng web (web networking) với giao thức HTTP, HTTPS, v.v.
4. Xử lý các yêu cầu và phản hồi trên giao thức HTTP.
5. Tương tác với các API web service như SOAP, RESTful, v.v.
6. Xử lý các giao thức mã hóa và bảo mật mạng như SSL/TLS.
Java cung cấp các lớp như Socket, ServerSocket, InetAddress, URLConnection, HttpURLConnection, v.v. để hỗ trợ việc lập trình mạng. Bằng cách sử dụng các lớp, phương thức và khái niệm trong Java, bạn có thể xây dựng các ứng dụng mạng như trình duyệt, máy chủ web, ứng dụng chat, gửi email, v.v.
Khái niệm Socket của lập trình mạng với java
Socket là một khái niệm quan trọng trong lập trình mạng với Java. Nó là một cấu trúc dữ liệu trừu tượng để thiết lập và quản lý kết nối mạng giữa hai thiết bị (máy tính, máy chủ) thông qua mạng IP.
Socket được sử dụng để gửi và nhận dữ liệu giữa các ứng dụng chạy trên các máy tính khác nhau. Và một socket là một trong những thiết bị đầu cuối của một liên kết giao tiếp hai chiều giữa hai chương trình đang chạy trên mạng.
Và một socket là một trong những thiết bị đầu cuối của một liên kết giao tiếp hai chiều giữa hai chương trình đang chạy trên mạng.
Một ứng dụng máy chủ (server) chạy trên một máy tính cụ thể và ở đó có một socket ràng buộc với một con số cụ thể và nó được gọi là cổng (port).
Trên phía máy khách (client), các ứng dụng máy khách cần phải biết của tên máy chủ (server name) mà trên đó các ứng dụng máy chủ đang chạy vào cổng mà máy chủ đang lắng nghe để tạo ra một socket và sử dụng socket này để thực hiện kết nối với máy chủ.
Khái niệm cổng (port)
Cổng là địa chỉ của ứng dụng và nó được đánh số từ 0 đến 65535 (Các cổng từ 0 đến 1023 đã được sử dụng. Ví dụ cổng 80 sử dụng trong các ứng dụng website, 21 sử dụng trong ứng dụng gửi file và nhận file – FTP, … và khi chỉ định cổng chúng ta phải không được phép sử dụng các cổng trong phạm vi này)
Sử dụng giao thức TCP của lập trình mạng với java
TCP cung cấp một kênh kết nối cho tất cả các ứng dụng cần kết nối đáng tin cậy (reliable connections) như HTTP, FTP, … Đối với giao thức này có điều kiện tiên quyết là phải thiết lập một kết nối trước khi thực hiện các bước xử lý tiếp theo.
Xử lý phía server (máy chủ)
Bước 1: Tạo ra Server socket
//Server socket
ServerSocket ss = new ServerSocket(portNumber);
//Client socket
Socket cs = ss.accept();
Bước 2: Tạo ra đối tượng nhận dữ liệu từ client
InputStream is = cs.getInputStream();
Scanner s = new Scanner(is);
Bước 3: Tạo ra đối tượng gửi dữ liệu cho client
OutputStream os = cs.getOutputStream();
PrintWriter pw = new PrintWriter(os, true);
Bước 4: Xử lý nhận dữ liệu và gửi dữ liệu
//Nhận dữ liệu từ client
String strReceive = s.nextLine();
//Gửi dữ liệu cho client
pw.println(Dữ liệu gửi cho client);
Xử lý phía client (máy khách)
Bước 1: Tạo ra Client socket
Socket cs = new Socket(serverName, portNumber);
Bước 2: Tạo ra đối tượng nhận dữ liệu từ server
InputStream is = cs.getInputStream();
Scanner s = new Scanner(is);
Bước 3: Tạo ra đối tượng gửi dữ liệu cho server
OutputStream os = cs.getOutputStream();
PrintWriter ps = new PrintWriter(os, true);
Bước 4: Xử lý nhận dữ liệu và gửi dữ liệu
//Nhận dữ liệu từ server
String strReceive = s.nextLine();
//Gửi dữ liệu cho server
pw.println(Dữ liệu gửi cho server);
Chương trình mẫu sử dụng giao thức TCP của lập trình mạng với java
Phía server
package swing_pkg.networking;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
/**
*
* @author giasutinhoc.vn
*/
public class ServerSide {
public static void main(String[] args) {
try {
//Tạo ServerSocket
ServerSocket server = new ServerSocket(5252);
//Khai báo Socket đại diện cho kết nối của cs với server
Socket cs;
while (true) {
//Lắng nghe kết nối từ cs
cs = server.accept();
//Tạo đối tượng dùng để nhận dữ liệu gửi về từ cs
InputStream is = cs.getInputStream();
Scanner s = new Scanner(is);
//Tạo đối tượng dùng để gửi dữ liệu cho cs
OutputStream os = cs.getOutputStream();
PrintWriter pw = new PrintWriter(os, true);
//Xử lý nhận và gửi dữ liệu
while (s.hasNextLine()) {
//Nhận dữ liệu từ cs
String strReceive = s.nextLine();
//Hiển thị dữ liệu
System.out.println("Receive from client: " + strReceive);
//Gửi dữ liệu cho cs
pw.println("Server side send data...");
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
Phía client
package swing_pkg.networking;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
/**
*
* @author giasutinhoc.vn
*
public class ClientSide {
public static void main(String[] args) {
try {
//Tạo đối tượng Socket đại diện cho cs
Socket cs = new Socket("localhost", 5252);
//Tạo đối tượng dùng để nhận dữ liệu từ server
InputStream is = cs.getInputStream();
Scanner s = new Scanner(is);
//Tạo đối tượng dùng để gửi dữ liệu đến server
OutputStream os = cs.getOutputStream();
PrintWriter ps = new PrintWriter(os, true);
//Gửi dữ liệu đến server
ps.println("Client slide send data...");
//Nhận dữ liệu từ server
String strReceive = s.nextLine();
System.out.println("Receive from server: " + strReceive);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
Một số bài tập thực hành của lập trình mạng với java
Câu 1: Thiết kế giao diện
Câu 2: Viết xử lý
- Phía server: Khi người dùng nhấp vào nút “Start”, thực hiện mở và lắng nghe kết nối từ client; tạo đối tượng nhận và gửi dữ liệu.
- Phía client: Khi người dùng nhấp vào nút “Connect”, thực hiện kết nối đến server, tạo đối tượng nhận và gửi dữ liệu.
- Khi người dùng nhấp vào nút “Send”, thực hiện gửi 2 số mà người dùng đã nhập cho server và nhận kết quả trả về là tổng của 2 số từ server.
- Khi người dùng nhấp vào nút lệnh “Exit”, kết thúc chương trình.
Kết luận của lập trình mạng với java
Như vậy, qua bài viết về Lập trình mạng với java trên đây, R2S chúng tôi đã giúp bạn hiểu được về Khái niệm Socket, cách Sử dụng giao thức TCP, Chương trình mẫu sử dụng giao thức TCP của lập trình mạng với java
Đừng quên bỏ lỡ bất cứ bài viết nào của chúng tôi để học thêm nhiều kiến thức hữu ích về lập trình giao diện trong lập trình java nhé.
Hãy đến website của R2S để tìm hiểu sâu hơn vào lập trình và công nghệ thông tin để có thêm nhiều kiến thức hay về nó hơn nha.
Bài viết gốc được đăng tải tại giasutinhoc.vn