2011-08-30 32 views
6

Có ba quá tải cho xây dựng một TcpListener:TcpListener: Làm thế nào để lắng nghe trên cổng cụ thể trên tất cả các giao diện?

i muốn để nghe trên một cổng cụ thể, nhưng trên tất cả availa giao diện ble. Có quá tải có sẵn để thực hiện điều đó, nhưng nó được đánh dấu là obsolete.

Cách ưa thích/không lỗi thời mới để nghe trên một cổng cụ thể trên tất cả các giao diện với một số TcpListener trong .NET là gì?


Đối với sự hữu ích sake, một IPEndPoint là:

public IPEndPoint(
    IPAddress address, 
    int port 
) 

đó là những gì quá tải thứ 3 là. Và một IPAddress mất, như constructor của nó:

  • một byte[]
  • một Int64
  • một byte[] và một Int64

Trả lời

19

Chỉ cần liên kết với IPAddress.Any - đó là cách này thường được thực hiện .. không chắc chắn nhưng nó có thể là bạn cần phải ràng buộc với IPAddress.IPv6Any quá.

SO post Điều này cho thấy bạn liên kết với tất cả các IP địa chỉ rõ ràng - và SO post này có code về cách để có được tất cả các địa chỉ IP cho ...


Từ MSDN:

Nếu bạn làm không quan tâm địa chỉ cục bộ nào được chỉ định, chỉ định IPAddress.Any cho tham số localaddr và nhà cung cấp dịch vụ cơ bản sẽ chỉ định địa chỉ mạng thích hợp nhất.


Từ MSDN:

IPAddress.Any Dòng

Cung cấp một địa chỉ IP chỉ ra rằng máy chủ nên lắng nghe cho hoạt động của khách hàng trên tất cả giao diện mạng.

+1

Chúa Giêsu; nó tệ hơn tôi tưởng.Bạn phải liệt kê tất cả các giao diện và tự nói rằng bạn muốn ràng buộc với tất cả các giao diện đó. –

+0

trên Linux với Mono nó là đủ để ràng buộc với Bất kỳ vì đó là "thực sự 0.0.0.0" và nó có nghĩa là "tất cả các giao diện" ... – Yahia

+2

Vâng, nó có nghĩa là "tất cả các giao diện IPv4", anyway. –

Các vấn đề liên quan