Sử dụng .NET, làm thế nào tôi có thể nghe các gói phát sóng udp được gửi tới .255 trên bất kỳ cổng nào mà không cần ràng buộc với một cổng cụ thể?Làm cách nào để nghe các gói phát sóng trên bất kỳ cổng nào?
Trả lời
Tôi nghĩ bạn sẽ cần phải thấp hơn UDP để thực hiện việc này.
Nếu tôi thực sự muốn thực hiện điều này, tôi sẽ bắt đầu bằng cách tải xuống máy phân tích gói/phân tích mạng nguồn mở (Ethereal.com) và tìm hiểu cách đọc các gói.
Nhìn xa hơn, tôi tìm thấy khá nhiều về việc chụp gói tại tcpdump.org.
Rất tiếc, tôi không thể cung cấp đoạn mã cụ thể, tôi luôn muốn liên kết với một cổng cụ thể.
Bạn sẽ cần sử dụng WinPCap hoặc tương tự như gói sniff ở cấp liên kết, sau đó lọc cho chương trình phát sóng UDP. Xin lỗi, tôi không nghĩ có API cấp cao hơn cho việc này.
Tôi đã tự tìm được cách. Đây là cách hoạt động:
mainSocket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
mainSocket.Bind(new IPEndPoint(IPAddress.Parse("192.168.0.1"), 0));
mainSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, true);
byte[] byTrue = new byte[4] { 1, 0, 0, 0 };
byte[] byOut = new byte[4] { 1, 0, 0, 0 };
// Socket.IOControl is analogous to the WSAIoctl method of Winsock 2
mainSocket.IOControl(IOControlCode.ReceiveAll, //Equivalent to SIO_RCVALL constant of Winsock 2
byTrue,
byOut);
//Start receiving the packets asynchronously
mainSocket.BeginReceive(byteData,0,byteData.Length,SocketFlags.None,new AsyncCallback(OnReceive),null);
Trong xử lý async, tôi làm một mainSocket.EndReceive (...), phân tích dữ liệu và bắt đầu một BeginReceive mới nếu muốn (điều khiển từ bên ngoài người nhận multithreaded).
Hoạt động như một sự quyến rũ. Tín dụng đi đến Hitesh Sharma (http://www.codeproject.com/KB/IP/CSNetworkSniffer.aspx)
- 1. Nhận các gói được phát sóng khi nghe một cổng cụ thể
- 2. cách chụp gói tại một cổng cụ thể trên bất kỳ giao diện nào bằng tshark
- 3. Nhận các gói phát sóng UDP trên Linux
- 4. Cách liên kết với bất kỳ cổng nào có sẵn?
- 5. Gói phát sóng UDP trên mạng con
- 6. Làm cách nào để phát triển trình phát video nhận luồng video trên phát sóng/phát đa hướng wi-fi?
- 7. Java trên Linux: Nghe các tin nhắn phát sóng trên một địa chỉ cục bộ bị ràng buộc
- 8. Lắng nghe phát sóng udp với thư viện tăng cường
- 9. Python: Nghe trên hai cổng
- 10. Phát hiện các sự kiện nhập/xuất chuột ở bất kỳ nơi nào trên JPanel
- 11. Bất kỳ cổng nào có sẵn của backtrace cho uclibc?
- 12. Cách đăng ký nghe cho bất kỳ thay đổi nào của Liên hệ trên android
- 13. Làm cách nào để bật adbd để nghe cổng tại thời điểm khởi động trong Android?
- 14. PID nào lắng nghe trên cổng máy đã cho
- 15. Nghe phát sóng Trước khi gỡ cài đặt ứng dụng
- 16. Flash AS3 EventDispatcher - bất kỳ cách nào để nhận danh sách người nghe đã đăng ký?
- 17. Làm thế nào để thay đổi HTTP cổng mà Play2 đang lắng nghe trên
- 18. NuGet không hiển thị bất kỳ gói nào
- 19. Lỗi NPM trên bất kỳ lệnh nào
- 20. Làm cách nào để phát hiện các thay đổi trong bất kỳ điều khiển nào của biểu mẫu trong C#?
- 21. Đóng gói lại các monads - bất kỳ cách thức chung nào?
- 22. 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?
- 23. Bất kỳ cách nào để phát hiện SMS đến E-Mail Gateways?
- 24. Ký tự đại diện cho chương trình phát sóng phạm vi nghe với $ trên AngularJs
- 25. lỗi angularjs trên $$ phát sóng
- 26. Có cách nào để biết liệu các chương trình phát sóng LocalBroadcastManager đã được nhận chưa?
- 27. XSD - làm cách nào để cho phép các phần tử theo bất kỳ thứ tự nào?
- 28. Tôi làm cách nào để biết cổng nối tiếp nào được sử dụng trên Linux?
- 29. Android phát hiện trạng thái cảm ứng từ bất kỳ ứng dụng nào
- 30. Làm cách nào để chrome.socket có thể được sử dụng để phát sóng hoặc phát đa hướng?
Tôi nghĩ bản chất ràng buộc ngăn chặn rõ ràng kịch bản này, nhưng Stack Overflow dạy tôi tất cả những thứ mà tôi chưa bao giờ biết. Đang chờ nghe câu trả lời trên cái này ... – grenade