2009-04-20 24 views
6

Linux'tan Windows'a bir iletişim kitaplığı yerleştiriyorum. Yaklaşımımın çoğunlukla ne olduğunu biliyorum. Kütüphane, tüm iletişim için tüm ham ethernet seviyesi çerçevelerini kullanır.Raw Ethernet Çerçeveleri Winsock Kullanımı

Kullandığım kitaplık PF_PACKET ailesini ve struct sockaddr_ll öğesini kullanıyor. MSDN winsock sitesine göz attıktan sonra eşdeğer bir aile/yapı bulamadım. Benim yaklaşımım burada ne olmalı?

Birkaç fikrim var, ama iyi bir fikir olup olmadığından emin değilim PF_UNSPEC, belirtilmemiş bir şekilde kullanabilirim. Sadece PF_PACKET temsilcisini (imzasız bir kısa) temsil edebilirdim Ayrıca Windows'da kendi sockadddr_ll yapısını oluşturabilirim.

Bu fikirlerin hiçbiri benim için iyi görünmüyor, sadece işe yaramayacak durumda olan korsanlar gibi görünüyorlar.

Herhangi bir öneri varsa, bunu takdir ediyorum.

cevap

3

Ham Yuvaları (ağ katmanını, aktarım katmanını ve uygulama katmanı bilgilerini yazmanız gereken yere) atıfta bulunduğunuzu varsayarım. Yeni Windows sürümleri (XP SP2 ve üstü) birçok kısıtlamaya sahip ham soketler için çok az desteğe sahiptir.

More info

çözeltisi ("ham yuva Sınırlar" na inin), inanıyorum, bu sistemler üzerinde send raw packets yapmanızı sağlar WinPcap, kullanmaktır.

+0

Tamam, ham soket üzerindeki sınırlamalar benim için geçerli değil. Uygulamam sadece ikinci katman kadar yüksek. Yani, sadece ethernet çerçeveleri almak/almak zorundayım, TCP/UDP/IP gerekli değildir. – devin

+1

Aslında öyle. WinPcap ile ham paketler gönderme örneğine bakın ve ihtiyacınız olanı bulursunuz :) – Aziz

+0

Pencerelerde katman 3'ün altında hiçbir şey kullanılamaz. – Aziz