Tôi có một máy tính có hai card mạng được kết nối với các mạng khác nhau (thiết lập mạng đa homed). Tôi muốn gửi các khung phát sóng UDP trên cả hai mạng. Địa chỉ IP của người gửi phải là địa chỉ IP của bộ điều hợp, được sử dụng để gửi khung. Địa chỉ đích phải là địa chỉ LIMITED BROADCAST.Gửi phát sóng UDP trên Windows 7
Ứng dụng khách hàng không được chạy với quyền quản trị (UAC không được chấp nhận).
Làm cách nào để gửi các khung UDP này tới địa chỉ LIMITED BROADCAST (255.255.255.255)? Làm cách nào để gửi các khung này đến địa chỉ NETWORK BROADCAST (x.y.z.255)?
Tôi biết cách làm điều này với ổ cắm thô. Nhưng ổ cắm thô chỉ có thể được sử dụng với quyền quản trị.
No. Ràng buộc ổ cắm ảnh hưởng đến việc các gói nhận được chấp nhận bởi ổ cắm này. Các gói tin được gửi sẽ được định tuyến theo các quy tắc định tuyến IP. Tôi có thể lặp lại các bộ điều hợp và các địa chỉ IP liên kết với các bộ điều hợp này và gửi một phát sóng mạng cho mỗi địa chỉ IP. Nhưng điều này không gửi đến địa chỉ LIMITED BROADCAST. – harper
Bạn có chắc chắn không? Khi bạn phát hành một SendTo, socket được kết nối hoàn toàn với socket cục bộ được sử dụng để gửi đi để người nhận có thể trả lời. Bạn có thể thấy điều này trong hành động vì bạn không thể thực hiện RecvFrom mà không cần ràng buộc hoặc gửi trước trên socket ... Nếu bạn có hai giao diện có thể cả hai định tuyến đến cùng một đích thì hệ điều hành chọn một nếu bạn không bị ràng buộc. Bạn có thể liên kết trước khi phát hành một SendTo để chọn địa chỉ cục bộ. –
Ah, tôi hiểu rồi. Bạn đúng! Trong Windows 7, lệnh bind() ảnh hưởng đến việc nhận và truyền tải các khung. Đây là một sự khác biệt đối với hành vi của Windows XP, nơi các khung đã được gửi với bất kỳ địa chỉ bộ điều hợp tùy ý nào cho tất cả các bộ điều hợp. Bạn cần các ổ cắm RAW với Windows XP để gửi một địa chỉ nguồn thích hợp. Nhưng Windows 7 gửi LIMITED BROADCASTS tới bộ điều hợp mà ổ cắm bị ràng buộc. Cảm ơn rất nhiều, Harper – harper