Trắc nghiệm Mạng máy tính Bài: Java Sockets là một trong những đề thi thuộc Chương 5: LẬP TRÌNH SOCKET trong học phần Mạng máy tính chuyên ngành Công Nghệ Thông Tin cấp độ Đại học. Phần này tập trung vào cách triển khai lập trình mạng bằng ngôn ngữ Java, một trong những nền tảng phổ biến nhất cho việc phát triển các ứng dụng đa nền tảng. Việc nắm vững API Socket của Java là kỹ năng thiết yếu để xây dựng các ứng dụng client-server mạnh mẽ và ổn định.
Trong bài học này, người học cần nắm được các nội dung trọng tâm như: các lớp chính trong Java để lập trình socket (Socket, ServerSocket, DatagramSocket, DatagramPacket, InetAddress), quy trình tạo ứng dụng client và server sử dụng TCP và UDP, cách thức gửi/nhận dữ liệu, xử lý lỗi và quản lý tài nguyên. Việc hiểu rõ các kiến thức này sẽ là nền tảng vững chắc để thiết kế, triển khai và bảo trì các ứng dụng mạng phức tạp bằng Java.
Hãy cùng Dethitracnghiem.vn tìm hiểu về đề thi này và tham gia làm kiểm tra ngay lập tức!
Trắc nghiệm Mạng máy tính Bài: Java Sockets
Câu 1.Trong Java, lớp nào được sử dụng để tạo một client socket kết nối đến một server thông qua TCP?
A. `ServerSocket`
B. `DatagramSocket`
C. `InetAddress`
D. `Socket`
Câu 2.Lớp nào trong Java được sử dụng để tạo một server socket lắng nghe các kết nối đến từ client thông qua TCP?
A. `Socket`
B. `DatagramSocket`
C. `DatagramPacket`
D. `ServerSocket`
Câu 3.Khi tạo một đối tượng `Socket` (client), các tham số cơ bản cần cung cấp là gì?
A. Chỉ số cổng của server.
B. Chỉ địa chỉ IP của server.
C. Địa chỉ MAC của server.
D. Địa chỉ IP (hoặc tên máy chủ) và số cổng của server.
Câu 4.Khi tạo một đối tượng `ServerSocket` (server), tham số cơ bản cần cung cấp là gì?
A. Địa chỉ IP của server.
B. Tên máy chủ của server.
C. Kích thước hàng đợi kết nối.
D. Số cổng mà server sẽ lắng nghe.
Câu 5.Để gửi dữ liệu qua một `Socket` (TCP), bạn sẽ sử dụng luồng (Stream) nào?
A. `InputStream`
B. `DataInputStream`
C. `BufferedReader`
D. `OutputStream`
Câu 6.Để nhận dữ liệu qua một `Socket` (TCP), bạn sẽ sử dụng luồng (Stream) nào?
A. `OutputStream`
B. `DataOutputStream`
C. `PrintWriter`
D. `InputStream`
Câu 7.Phương thức nào của lớp `ServerSocket` được sử dụng để chờ và chấp nhận một kết nối từ client, sau đó trả về một đối tượng `Socket` mới để giao tiếp với client đó?
A. `bind()`
B. `listen()`
C. `connect()`
D. `accept()`
Câu 8.Lớp nào trong Java được sử dụng để biểu diễn một địa chỉ IP (cả IPv4 và IPv6)?
A. `IPAddress`
B. `NetworkAddress`
C. `HostAddress`
D. `InetAddress`
Câu 9.Trong Java, lớp nào được sử dụng để tạo một socket cho giao tiếp UDP?
A. `Socket`
B. `ServerSocket`
C. `InetAddress`
D. `DatagramSocket`
Câu 10.Khi sử dụng `DatagramSocket` (UDP), dữ liệu được gửi và nhận dưới dạng nào?
A. Stream of bytes.
B. TCP segments.
C. UDP packets.
D. `DatagramPacket` objects.
Câu 11.Khi gửi một `DatagramPacket` trong Java, bạn cần chỉ định những thông tin gì?
A. Chỉ dữ liệu.
B. Chỉ địa chỉ IP đích.
C. Chỉ số cổng đích.
D. Dữ liệu, địa chỉ IP đích và số cổng đích.
Câu 12.Khi nhận một `DatagramPacket` trong Java, thông tin nào có thể được trích xuất từ gói tin đã nhận?
A. Chỉ dữ liệu.
B. Chỉ địa chỉ IP nguồn.
C. Chỉ số cổng nguồn.
D. Dữ liệu, địa chỉ IP nguồn và số cổng nguồn.
Câu 13.Để đóng một kết nối TCP (socket) trong Java, phương thức nào được sử dụng?
A. `disconnect()`
B. `release()`
C. `shutdown()`
D. `close()`
Câu 14.Khi một `ServerSocket` chấp nhận một kết nối, nó tạo ra một `Socket` mới. Mục đích của `Socket` mới này là gì?
A. Để đóng `ServerSocket`.
B. Để lắng nghe các kết nối mới.
C. Để gửi dữ liệu đến tất cả các client.
D. Để giao tiếp riêng biệt với client vừa kết nối, cho phép `ServerSocket` tiếp tục lắng nghe các kết nối khác.
Câu 15.Khi một ứng dụng server Java cần xử lý nhiều client đồng thời, mô hình lập trình nào thường được sử dụng?
A. Mô hình đơn luồng.
B. Mô hình lặp lại (Iterative Server).
C. Mô hình đồng bộ (Synchronous Server).
D. Mô hình đa luồng (Multi-threaded Server) hoặc sử dụng Pool luồng (Thread Pool).
Câu 16.Nếu bạn cố gắng kết nối đến một server mà không chạy trên cổng đó, loại ngoại lệ (exception) nào thường xảy ra trong Java?
A. `IOException`
B. `SocketTimeoutException`
C. `NullPointerException`
D. `ConnectException`
Câu 17.Để đặt thời gian chờ (timeout) cho một thao tác đọc trên `Socket` (TCP) trong Java, bạn sẽ sử dụng phương thức nào?
A. `setSoTimeout()`
B. `setReceiveBufferSize()`
C. `setSendBufferSize()`
D. `setSoTimeout(int timeout)`
Câu 18.Trong Java Socket Programming, `InputStream` và `OutputStream` được sử dụng để làm gì?
A. Để quản lý kết nối mạng.
B. Để xử lý các lỗi bảo mật.
C. Để thiết lập địa chỉ IP.
D. Để đọc và ghi dữ liệu nhị phân từ/đến socket.
Câu 19.Nếu bạn muốn gửi dữ liệu dưới dạng chuỗi (String) qua TCP socket trong Java, bạn thường sẽ “bọc” `OutputStream` bằng lớp nào để tiện lợi hơn?
A. `BufferedReader`
B. `DataInputStream`
C. `ObjectInputStream`
D. `PrintWriter` hoặc `BufferedWriter`
Câu 20.Nếu bạn muốn đọc dữ liệu dưới dạng chuỗi (String) từ TCP socket trong Java, bạn thường sẽ “bọc” `InputStream` bằng lớp nào để tiện lợi hơn?
A. `PrintWriter`
B. `DataOutputStream`
C. `ObjectOutputStream`
D. `BufferedReader` hoặc `InputStreamReader`
Câu 21.Trong Java, để lấy địa chỉ IP của một host từ tên máy chủ (ví dụ: `www.google.com`), bạn sẽ sử dụng phương thức tĩnh nào của lớp `InetAddress`?
A. `getLocalHost()`
B. `getByAddress()`
C. `isReachable()`
D. `getByName(String host)`
Câu 22.Lớp `DatagramSocket` trong Java có thể được tạo mà không cần chỉ định số cổng nếu:
A. Nó là một client socket.
B. Nó sẽ chỉ gửi dữ liệu.
C. Nó sẽ chỉ nhận dữ liệu.
D. Bạn muốn hệ thống tự động gán một số cổng tạm thời khả dụng cho nó.
Câu 23.Điều gì sẽ xảy ra nếu bạn không đóng `Socket` hoặc `ServerSocket` sau khi sử dụng xong?
A. Ứng dụng sẽ chạy nhanh hơn.
B. Không có ảnh hưởng gì đáng kể.
C. Dữ liệu sẽ tự động được gửi đi.
D. Các tài nguyên mạng (như cổng, kết nối) sẽ không được giải phóng, dẫn đến rò rỉ tài nguyên.
Câu 24.Để một server Java có thể tự động khởi động lại và tiếp tục lắng nghe kết nối nếu có lỗi xảy ra, người ta thường triển khai cấu trúc nào?
A. Đặt server vào một vòng lặp vô hạn.
B. Sử dụng một thread riêng biệt cho mỗi kết nối.
C. Bắt ngoại lệ và xử lý chúng.
D. Vòng lặp `while(true)` bao quanh `accept()` và xử lý từng client trong một luồng/tiến trình riêng biệt, cùng với cơ chế xử lý ngoại lệ.
Câu 25.Khi bạn cần gửi một đối tượng Java qua mạng bằng socket, bạn sẽ sử dụng các lớp nào để “tuần tự hóa” (serialize) và “giải tuần tự hóa” (deserialize) đối tượng đó?
A. `DataInputStream` và `DataOutputStream`.
B. `BufferedReader` và `PrintWriter`.
C. `FileReader` và `FileWriter`.
D. `ObjectInputStream` và `ObjectOutputStream`.