Chciałbym napisać program i uruchomić go na dwóch komputerach oraz wysłać dane z jednego komputera do drugiego w ramce Ethernet.Czy mogę napisać programy sieciowe oparte na sieci Ethernet w C++?
Zwykle dane aplikacji znajdują się w warstwie 7 modelu OSI, czy istnieje coś takiego jak ograniczenie jądra lub ograniczenie interfejsu API, które uniemożliwiłoby mi napisanie programu, w którym można określić docelowy adres MAC i mieć pewne dane wysłane do ten MAC jako ładunek Ethernet? Następnie napisz program do nasłuchiwania przychodzących ramek i chwyć klatki z określonego źródłowego adresu MAC, wyodrębniając ładunek danych z ramki?
(Więc nie chcę żadnych innych kosztów, takich jak nagłówki IP lub TCP/UDP, nie chcę iść wyżej niż warstwa 2).
Czy można to zrobić w C++, czy też cała komunikacja musi odbywać się w warstwie IP i czy można to zrobić w systemie Ubuntu? Dodatkowa miłość do wskazywania lub dostarczania przykładów! : D
Mój problem jest oczywiście jestem nowy do programowania sieciowego w języku C++ i o ile mi wiadomo, jeśli chcę komunikować się przez sieć, muszę użyć połączenia socket()
lub podobnego, który działa w warstwie IP , więc czy mogę napisać program C++ do pracy na warstwie 2 OSI, czy istnieją w tym celu interfejsy API, czy jądro Linux pozwala na to?
C++ to język programowania, warstwa IP to abstrakcyjna koncepcja. W jaki sposób jeden zastępujący drugiego w tekście jest poza mną. – littleadv
@littleadv: Dlaczego? Nie wie dokładnie, o co pytać ("Jak używać surowych gniazd w C++?"), Ale doskonale rozumiesz znaczenie. – cha0site
Teoretycznie nie powinno być problemów z C++, które spadną do 2, ale obsługa systemu operacyjnego może Cię ograniczyć. Choć UDP ma bardzo mało narzutów, po prostu użyj tego. –