2009-04-20 36 views
6

Tôi đang chuyển thư viện truyền thông từ Linux sang Windows. Tôi biết cách tiếp cận của tôi là phần lớn. Thư viện sử dụng tất cả các khung mức ethernet thô cho tất cả các liên lạc.Khung Ethernet Nguyên Sử dụng Winsock

Thư viện tôi đang chuyển từ sử dụng gia đình PF_PACKET và cấu trúc sockaddr_ll. Sau khi duyệt qua các trang web winsock MSDN, tôi đã không tìm thấy một gia đình tương đương/struct. Cách tiếp cận của tôi nên ở đây là gì?

Tôi có một vài ý tưởng, nhưng tôi không chắc liệu đó có phải là ý tưởng hay không Tôi có thể sử dụng PF_UNSPEC, để không xác định. Tôi chỉ có thể vượt qua số PF_PACKET đại diện (đó là một unsigned ngắn) Tôi cũng có thể chỉ cần làm cho riêng của tôi sockadddr_ll struct trong Windows.

Không ai trong số những ý tưởng đó có vẻ tốt đối với tôi, chúng dường như giống như những hacks không thực sự có khả năng hoạt động.

Nếu có bất kỳ đề xuất nào, tôi sẽ đánh giá cao nó.

Trả lời

3

Tôi giả sử bạn đang đề cập đến Ổ cắm nguyên (nơi bạn phải ghi lớp mạng, lớp vận chuyển và thông tin lớp ứng dụng). Các phiên bản Windows mới (XP SP2 trở lên) có hỗ trợ rất hạn chế đối với các ổ cắm thô với nhiều hạn chế.

More info (di chuyển xuống "Hạn chế Raw Sockets")

Các giải pháp, tôi tin rằng, là sử dụng WinPcap, cho phép bạn send raw packets trên những hệ thống này.

+0

ok, các giới hạn trên ổ cắm thô không áp dụng cho tôi. Ứng dụng của tôi chỉ tăng lên cao như lớp thứ hai. Tức là, tôi chỉ cần rê/nhận khung ethernet, không cần TCP/UDP/IP. – devin

+1

Thực ra nó có. Hãy xem ví dụ về việc gửi các gói dữ liệu thô với WinPcap và bạn sẽ tìm thấy những gì bạn cần :) – Aziz

+0

Không có gì bên dưới lớp 3 được cho phép trong các cửa sổ. – Aziz

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