459
Chương 11: Lập trình mạng
Console.WriteLine("Connection closed.");
// Đóng socket nằm dưới (ngừng lắng nghe yêu cầu mới).
listener.Stop();
Console.WriteLine("Listener stopped.");
} catch (Exception err) {
Console.WriteLine(err.ToString());
}
Console.ReadLine();
}
}
10.
10.
Thi t l p các tùy ch n socket
ế ậ
ọ
Thi t l p các tùy ch n socket
ế ậ
ọ
Bạn cần thiết lập các tùy chọn socket mức-thấp, chẳng hạn các tùy chọn cho biết
send timeout và receive timeout.
Sử dụng phương thức
Socket.SetSocketOption
. Bạn có thể thiết lập các thuộc
tính của socket được sử dụng để lắng nghe các yêu cầu hoặc các thuộc tính của
socket được sử dụng cho một phiên client cụ thể.
Bạn có thể sử dụng phương thức
Socket.SetSocketOption
để thiết lập một số thuộc tính
socket mức-thấp. Khi gọi phương thức này, bạn cần cung cấp ba đối số sau đây:
•
Một giá trị thuộc kiểu liệt kê
SocketOptionLevel
, cho biết kiểu socket mà thiết lập này
sẽ áp dụng cho nó (bao gồm
IP
,
IPv6
,
Socket
,
Tcp
,
Udp
).
•
Một giá trị thuộc kiểu liệt kê
SocketOptionName
, cho biết thiết lập socket mà bạn muốn
thay đổi (xem danh sách các giá trị của
SocketOptionName
trong tài liệu .NET
Framework).
•
Một giá trị mô tả thiết lập mới. Giá trị này thường là một số nguyên, nhưng cũng có thể
là một mảng byte hay một kiểu đối tượng.
Ví dụ dưới đây sẽ thiết lập send-timeout của socket:
// Thao tác gửi sẽ hết hiệu lực nếu không nhận được
// thông tin xác nhận trong vòng 1000 mili-giây.
socket.SetSocketOption(SocketOptionLevel.Socket,
SocketOptionName.SendTimeout, 1000);
Chú ý rằng, để truy xuất socket mô tả một kết nối client/server, bạn phải sử dụng phương thức
TcpListener.AcceptSocket
thay cho phương thức
TcpListener.AcceptTcpClient
(đã được
thảo luận trong mục 11.9).
Bạn cũng có thể thiết lập các tùy chọn cho socket được sử dụng bởi
TcpListener
để theo dõi
các yêu cầu kết nối. Tuy nhiên, bạn phải thực hiện thêm một vài bước nữa. Lớp
TcpListener