CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 459

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
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

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.