|
| UDP netværk med Winsock2 problem Fra : Klaus Petersen |
Dato : 18-02-03 04:30 |
|
Hej NG.
Jeg arbejder i øjeblikket med at få et lille netværksprogram til at virke,
men det driller.
Jeg kan få det til at virke med en alm. UDP socket - den kan både sende og
modtage.
Der hvor mit problem kommer ind er, at jeg i et større projekt har brug for
en udvidelse af ovenstående.
Udvidelsen består i, at jeg skal kunne sende en UDP pakke til destinations
IP og port og i pakken angive hvilken IP og port serveren skal sende sit
svar til.
Med det vil jeg opnå, at jeg kan sende f.eks. 10 pakker, hvor serverens svar
på pakkerne bliver sendt til (10) forskellige porte på min computer.
Så vidt jeg har kunne læse mig til, er det jeg har brug for, en "rå"
(SOCK_RAW) socket, hvor jeg manuelt opbygger de datagrammer, der skal
afsendes - da man i UDP headeren kan specificere en "source port" - port
hvor pakken kommer fra og dermed også den port, som svaret sendes til.
Det er muligt, at der findes andre løsninger på mit problem, men jeg har
ikke fundet andre endnu.
Jeg kan sagtens skabe min socket og faktisk lave en "sendto" på den, der dog
aldrig bliver modtaget på serveren.
Så har nogen her prøvet at sende manuelt opbyggede UDP pakker over en RAW
socket ?
Jeg er taknemlig for enhver hjælp til løsning af dette her problem.
Klaus.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Problemet er opstået ved følgende situation:
10 pakker sendes til en server, men på 10 forskellige porte.
Serveren svarer på pakkerne og de modtages på min computer.
Men jeg kan udfra svaret ikke afgøre hvilken port på serveren pakken
oprindeligt blev sendt til, og dermed skelne dem fra hinanden. (Serveren
bruger en port til at sende med og en anden til at modtage på).
En mulig løsning ville være tænker jeg, at svarene blev sendt på 10
forudefinerede porte på min computer, så jeg udfra den port, den blev
modtaget på, kan opnå mulighed for at skelne mellem dem.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| |
Kim Hansen (18-02-2003)
| Kommentar Fra : Kim Hansen |
Dato : 18-02-03 07:36 |
|
"Klaus Petersen" <ng@spectual.ra.bnaa.dk> writes:
> Men jeg kan udfra svaret ikke afgøre hvilken port på serveren pakken
> oprindeligt blev sendt til, og dermed skelne dem fra hinanden. (Serveren
> bruger en port til at sende med og en anden til at modtage på).
Er der en grund til at du ikke bare kommer noget data i dine pakker
som du kan bruge til at skelne dem med?
--
Kim Hansen | |\ _,,,---,,_ | Det er ikke
Dalslandsgade 8, A708 | /,`.-'`' -. ;-;;,_ | Jeopardy.
2300 København S | |,4- ) )-,_. ,\ ( `'-' | Svar _efter_
Phone: 32 88 60 86 | '---''(_/--' `-'\_) | spørgsmålet.
| |
Klaus Petersen (18-02-2003)
| Kommentar Fra : Klaus Petersen |
Dato : 18-02-03 11:19 |
|
> Er der en grund til at du ikke bare kommer noget data i dine pakker
> som du kan bruge til at skelne dem med?
Ja. Jeg har ingen kontrol over hvad serveren sender og formatet jeg skal
følge er fastlagt af Valve.
| |
Jakob Monstrup (18-02-2003)
| Kommentar Fra : Jakob Monstrup |
Dato : 18-02-03 11:59 |
|
> Så vidt jeg har kunne læse mig til, er det jeg har brug for, en "rå"
> (SOCK_RAW) socket, hvor jeg manuelt opbygger de datagrammer, der skal
> afsendes - da man i UDP headeren kan specificere en "source port" - port
> hvor pakken kommer fra og dermed også den port, som svaret sendes til.
Du kan prøve at finde nogen af de mange winsock eksempler der laver ping.
Disse er ofte implementeret som raw sockets hvor pakken bygges manuelt.
Vil tro du kan finde den fornødne information der.
| |
Kim Hansen (19-02-2003)
| Kommentar Fra : Kim Hansen |
Dato : 19-02-03 02:17 |
|
"Klaus Petersen" <ng@spectual.ra.bnaa.dk> writes:
> Udvidelsen består i, at jeg skal kunne sende en UDP pakke til destinations
> IP og port og i pakken angive hvilken IP og port serveren skal sende sit
> svar til.
>
> Med det vil jeg opnå, at jeg kan sende f.eks. 10 pakker, hvor serverens svar
> på pakkerne bliver sendt til (10) forskellige porte på min computer.
Hvad så med bare at åbne 10 forskellige almindelige UDP-porte på
afsender-computeren? De får forskellige source-portnummre, som
serverne returnerer deres pakker til.
--
Kim Hansen | |\ _,,,---,,_ | Det er ikke
Dalslandsgade 8, A708 | /,`.-'`' -. ;-;;,_ | Jeopardy.
2300 København S | |,4- ) )-,_. ,\ ( `'-' | Svar _efter_
Phone: 32 88 60 86 | '---''(_/--' `-'\_) | spørgsmålet.
| |
|
|