462
Chương 11: Lập trình mạng
// Đóng socket.
client.Close();
Console.WriteLine(ID + ": Client connection closed.");
Console.ReadLine();
}
}
Kế tiếp, thay đổi mã lệnh của server sao cho nó lặp liên tục, tạo ra các thể hiện
ClientHandler
mới khi cần và chạy chúng trong các tiểu trình mới. Dưới đây là mã lệnh đã được sửa đổi:
public class TcpServerTest {
private static void Main() {
TcpListener listener =
new TcpListener(IPAddress.Parse("127.0.0.1"), 8000);
Console.WriteLine("Server: About to initialize port.");
listener.Start();
Console.WriteLine("Server: Listening for a connection...");
int clientNum = 0;
while (true) {
try {
// Đợi yêu cầu kết nối, và trả về một TcpClient.
TcpClient client = listener.AcceptTcpClient();
Console.WriteLine("Server: Connection accepted.");
// Tạo một đối tượng mới để xử lý kết nối này.
clientNum++;
ClientHandler handler =
new ClientHandler(client, "Client " +
clientNum.ToString());
// Khởi động đối tượng này làm việc trong