Ik ga een UDP protocolstack ontwikkelen in C, daarvoor moet de stack om kunnen gaan met zowel ARP als UDP, de datastructuren en de verzendfunctie wil ik er zo uit laten:
Mijn vraag is nu, hoe kan ik in de functie sendData er voor zorgen dat de data die
ik in de datastructuren heb gedefinieerd achter elkaar kan versturen op deze manier:
- Voor een ARP frame
<<Ethernet Header>><<Arp Frame>>
- Voor een UDP frame
<<Ethernet Header>><<IP header>><< UDP frame>><<data To Send>>
Kan dit voor mijn ontwikkelde datastructuren, zo ja hoe?, of moet ik ze aanpassen
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| typedef struct
{
eth_header ethernetHeader;
void* data; // pointer naar arpFrame of ipFrame
}ethernetFrame;
typedef struct
{
elem1 element1;
elem2 element2;
etc...
} arpFrame;
typedef struct
{
ip_header ipHeader;
void* data; // pointer naar udpFrame
}ipFrame;
typedef struct
{
udp_header udpHeader;
void* data; // pointer naar dataToSend
}udpFrame
typedef struct
{
elem1 element1;
elem2 element2;
etc...
} dataToSend;
int sendData( void* data, int dataLength )
// De data waarna in data gewezen wordt en de lengte dataLength heeft
// wordt naar over het netwerk verstuurd
//
// Functieresultaat:
// - 0 = gelukt
// - 1 = mislukt |
Mijn vraag is nu, hoe kan ik in de functie sendData er voor zorgen dat de data die
ik in de datastructuren heb gedefinieerd achter elkaar kan versturen op deze manier:
- Voor een ARP frame
<<Ethernet Header>><<Arp Frame>>
- Voor een UDP frame
<<Ethernet Header>><<IP header>><< UDP frame>><<data To Send>>
Kan dit voor mijn ontwikkelde datastructuren, zo ja hoe?, of moet ik ze aanpassen