Cho đoạn mã:
String m = "Hello";
S.Send(Encoding.ASCII.GetBytes(m));
Để đoạn mã trên thực thi đúng, thì biến S phải đảm bảo điều gì?
Trả lời:
Đáp án đúng: C
Đoạn mã sử dụng phương thức `Send` để gửi dữ liệu. Phương thức `Send` này thường được sử dụng với socket đã được kết nối tới một địa chỉ đích. Do đó:
- **A. S là một UDP Socket, đã khởi tạo thành công**: UDP là giao thức không kết nối, do đó không cần thiết phải `Connect`. Tuy nhiên, `Send` vẫn có thể được sử dụng, nhưng cần chỉ định địa chỉ đích. Phương án này chưa đủ điều kiện.
- **B. S là một UDP Socket, đã gọi phương thức Bind thành công**: `Bind` gán địa chỉ IP và port cho socket cục bộ, không liên quan đến việc thiết lập kết nối để gửi dữ liệu tới đích. Vì vậy, phương án này không phù hợp.
- **C. S là một TCP Socket, đã gọi phương thức Connect thành công**: TCP là giao thức hướng kết nối. Trước khi gửi dữ liệu bằng `Send`, socket TCP cần phải thiết lập kết nối với địa chỉ đích thông qua phương thức `Connect`. Đây là điều kiện cần thiết để `Send` hoạt động đúng.
- **D. S là một TCP Socket, đã khởi tạo thành công**: Việc khởi tạo socket TCP là bước đầu tiên, nhưng chưa đủ. Cần phải gọi `Connect` để thiết lập kết nối trước khi có thể gửi dữ liệu.
Như vậy, phương án C là chính xác nhất vì nó đảm bảo rằng socket TCP đã được kết nối tới một địa chỉ đích, cho phép phương thức `Send` gửi dữ liệu thành công.





