Cho đoạn lệnh:
TcpListener S1 = new TcpListener(IPAddress.Any, 9050);
S1.Start();
TcpClient S2 = S1.AcceptTcpClient();
Những mệnh đề nào sau đây là đúng? (chọn một hoặc nhiều)
Trả lời:
Đáp án đúng: C
Đoạn mã C# này thể hiện một phần của quá trình thiết lập kết nối TCP server.
* **`TcpListener S1 = new TcpListener(IPAddress.Any, 9050);`**: Dòng này khởi tạo một `TcpListener` (S1) để lắng nghe các kết nối đến trên tất cả các địa chỉ IP của máy (IPAddress.Any) và cổng 9050.
* **`S1.Start();`**: Dòng này bắt đầu lắng nghe các kết nối đến.
* **`TcpClient S2 = S1.AcceptTcpClient();`**: Dòng này chấp nhận một kết nối TCP client đến. Lưu ý rằng luồng (thread) hiện tại sẽ bị chặn (block) tại dòng này cho đến khi có một client kết nối đến.
Phân tích các lựa chọn:
* **A. Dữ liệu được gửi qua S1 và nhận qua S2**: Sai. `S1` là `TcpListener`, nó chỉ lắng nghe và chấp nhận các kết nối. Dữ liệu thực tế được gửi và nhận thông qua đối tượng `TcpClient` (S2) sau khi kết nối được thiết lập.
* **B. Đoạn lệnh trên có thể dùng cho phía client trong mô hình TCP Client/Server**: Sai. Đoạn lệnh này sử dụng `TcpListener` và `AcceptTcpClient()`, là các thành phần phía server sử dụng để lắng nghe và chấp nhận kết nối từ client.
* **C. Process hiện tại sẽ chờ kết nối từ cổng 9050**: Đúng. Lệnh `S1.AcceptTcpClient()` sẽ làm cho process hiện tại tạm dừng và chờ đợi một kết nối đến cổng 9050.
* **D. Đoạn lệnh trên có thể dùng cho phía server trong mô hình TCP Client/Server**: Đúng. Đoạn lệnh này thể hiện các bước cơ bản để thiết lập một TCP server: tạo listener, bắt đầu lắng nghe, và chấp nhận kết nối.
Vậy, các đáp án đúng là C và D.