Ngay khi bạn bắt đầu nghe trên cổng chưa được gán (0), nó sẽ được hệ điều hành (hoặc chính xác hơn là bởi ngăn xếp TCP/IP). Kể từ khi ngăn xếp quản lý tất cả các cổng, nó có thể gán một miễn phí.
Vì vậy, chỉ cần bắt đầu nghe kết nối của bạn và sau đó kiểm tra cổng trong thuộc tính LocalEndpoint để chuyển nó cho khách hàng. TcpListener documentation chứa nhiều thông tin hơn về điều này.
Nếu bạn cần tìm một kênh miễn phí trong một phạm vi, bạn chỉ cần lặp lại toàn bộ phạm vi và cố gắng bắt đầu nghe từng câu. Nếu bạn thành công, bạn tìm thấy một cổng miễn phí và bạn có thể thoát khỏi vòng lặp của mình; nếu không, chỉ cần tiếp tục với vòng lặp. Đây là cách đáng tin cậy duy nhất để làm điều đó bởi vì nếu không bạn có thể chạy vào điều kiện đua với các quy trình khác hoặc thậm chí là chuỗi của bạn mà cả hai đều đánh giá cùng một cổng miễn phí và đầu tiên sử dụng nó "thắng", trong khi mã khác sẽ không có thể sử dụng cổng.
bản sao có thể có của [Tìm cổng TCP tiếp theo trong. Net] (http://stackoverflow.com/questions/138043/find-the-next-tcp-port-in-net) –