/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Linux: Sockets og DLL'er
Fra : Klaus Petersen


Dato : 15-11-03 10:55

Hej.

Kan nogen fortælle mig lidt om hvordan man egentlig laver netværk på en
linux platform?

Findes der egentlig noget der svarer til DLL filer på linux?

Klaus.



 
 
Kent Friis (15-11-2003)
Kommentar
Fra : Kent Friis


Dato : 15-11-03 11:22

Den Sat, 15 Nov 2003 10:54:46 +0100 skrev Klaus Petersen:
>Hej.
>
>Kan nogen fortælle mig lidt om hvordan man egentlig laver netværk på en
>linux platform?

man trækker nogen kabler...

>Findes der egentlig noget der svarer til DLL filer på linux?

..so (shared object). De ligger i /lib, /usr/lib, /usr/local/lib og
lignende steder.

Mvh
Kent
--
Help test this great MMORPG game - http://www.eternal-lands.com/

Bertel Brander (15-11-2003)
Kommentar
Fra : Bertel Brander


Dato : 15-11-03 12:07

Klaus Petersen wrote:
> Hej.
>
> Kan nogen fortælle mig lidt om hvordan man egentlig laver netværk på en
> linux platform?
>

Man bruger svjv socket(...) på ca. samme måde som på PC'er

/b


Leo Laursen (15-11-2003)
Kommentar
Fra : Leo Laursen


Dato : 15-11-03 14:21

Bertel Brander <bertel@post4.tele.dk>:
> Klaus Petersen wrote:
>> Kan nogen fortælle mig lidt om hvordan man egentlig laver netværk på
>> en linux platform?

> Man bruger svjv socket(...) på ca. samme måde som på PC'er

Jeg bruger Linux på en PC, så jeg kan ikke forstå ovenstående

Leo
--
Every absurdity has a champion who will defend it.

Bertel Brander (16-11-2003)
Kommentar
Fra : Bertel Brander


Dato : 16-11-03 20:50

Leo Laursen wrote:
> Bertel Brander <bertel@post4.tele.dk>:
>
>>Klaus Petersen wrote:
>>
>>>Kan nogen fortælle mig lidt om hvordan man egentlig laver netværk på
>>>en linux platform?
>
>
>>Man bruger svjv socket(...) på ca. samme måde som på PC'er
>
>
> Jeg bruger Linux på en PC, så jeg kan ikke forstå ovenstående

Det jeg mente var:

Man bruger svjv socket(...) på ca. samme måde som på Windows

/b


Mogens Hansen (15-11-2003)
Kommentar
Fra : Mogens Hansen


Dato : 15-11-03 13:21


"Klaus Petersen" <spectual2@get2net.dk> wrote in message
news:xJmtb.7070$wf5.1278@news.get2net.dk...
> Hej.
>
> Kan nogen fortælle mig lidt om hvordan man egentlig laver netværk på en
> linux platform?

Hvis du skal lave netværksprogrammering i C++ er det værd at kigge på ACE
(http://www.cs.wustl.edu/~schmidt/ACE.html), som understøtter en lang række
platforme - herunder naturligvis Linux og MS-Windows.

Venlig hilsen

Mogens Hansen



Igor V. Rafienko (15-11-2003)
Kommentar
Fra : Igor V. Rafienko


Dato : 15-11-03 22:30

[ Klaus Petersen ]

[ ... ]

> Kan nogen fortælle mig lidt om hvordan man egentlig laver netværk på
> en linux platform?


Nå må du nesten spesifisere litt mer hva er det du _egentlig_ er
interessert i.

Dersom du vil vite litt om nettverksadministrasjon, og hvordan man
setter opp et nett på en fornuftig måte (nettoppdelinng, brannvegger,
tjenestekontroll, overvåkning osv.), burde du kanskje spørre folk i
dk.edb.netvaerk.

Dersom du har lyst til å vite hvilke abstraksjoner mot
nettverksprogrammering man har på diverse Linuxplatformer, så er
bøkene til W. Richard Stevens et greit sted å starte (det er oftest et
greit sted å slutte og, da det som ikke står der er neppe verdt å
vite).

@Book{unix:stevensUNP1,
author = {Stevens, W. Richard},
title = {{UNIX} network programming: Networking {APIs}: sockets
and {XTI}},
volume = {1},
publisher = PH,
address = {Upper Saddle River, NJ 07458, USA},
edition = {Second},
pages = {1009},
year = {1998},
ISBN = {0-13-490012-X},
LCCN = {QA76.76.O63S755 1998}
}

.... er et greit utgangspunkt. Det, kombinert med "Advanced programming
in the UNIX environment" burde gi enhver et solid grunnlag.

Har du lyst til å vite litt mer om abstraksjoner mot nettverkslag, bør
du følge rådet til Mogens Hansen.


> Findes der egentlig noget der svarer til DLL filer på linux?


Ta en titt på

@Book{misc:linkers00,
author =     {Levine, John R.},
title =     {Linkers \& Loaders},
publisher =     MK,
year =     {2000},
pages = {xv + 256},
ISBN = {1-55860-496-0},
url = {http://net.gurus.com/toc-linker.html},
url = {http://linker.iecc.com/}
}





ivr
--
<html><form><input type crash></form></html>

Michael aka Slowhand (21-11-2003)
Kommentar
Fra : Michael aka Slowhand


Dato : 21-11-03 23:12


"Klaus Petersen" <spectual2@get2net.dk> skrev i en meddelelse
news:xJmtb.7070$wf5.1278@news.get2net.dk...
> Hej.
>
> Kan nogen fortælle mig lidt om hvordan man egentlig laver netværk på en
> linux platform?
>
> Findes der egentlig noget der svarer til DLL filer på linux?
>
> Klaus.
>
>
Jeg har nogle enkelte eksempler liggende på http://help.darknet.dk men du
skal være logget ind for at se dem!
Du er velkommen til at stille spørgsmål der også!
Det er skarbede eksempler og man kunne godt have lavet dem smartere men for
mange idiomer, wrappers mv. gør det bare sværere at overskue som ny
socketprogrammør!

Håber du kan bruge det!



Klaus Petersen (23-11-2003)
Kommentar
Fra : Klaus Petersen


Dato : 23-11-03 15:14


> Jeg har nogle enkelte eksempler liggende på http://help.darknet.dk men du
> skal være logget ind for at se dem!
> Du er velkommen til at stille spørgsmål der også!
> Det er skarbede eksempler og man kunne godt have lavet dem smartere men
for
> mange idiomer, wrappers mv. gør det bare sværere at overskue som ny
> socketprogrammør!

Det har du ret i. Godt nok er jeg ikke helt ny socketprogrammør - har
programmeret flere typer sockets på en windows platform.

Det er måske næsten portabelt når man bruger de alm. sockets?



Zodiaz12 (23-11-2003)
Kommentar
Fra : Zodiaz12


Dato : 23-11-03 15:40


"Klaus Petersen" <spectual2@get2net.dk> skrev i en meddelelse
news:Hg3wb.2987$Ff3.495@news.get2net.dk...
>
> > Jeg har nogle enkelte eksempler liggende på http://help.darknet.dk men
du
> > skal være logget ind for at se dem!
> > Du er velkommen til at stille spørgsmål der også!
> > Det er skarbede eksempler og man kunne godt have lavet dem smartere men
> for
> > mange idiomer, wrappers mv. gør det bare sværere at overskue som ny
> > socketprogrammør!
>
> Det har du ret i. Godt nok er jeg ikke helt ny socketprogrammør - har
> programmeret flere typer sockets på en windows platform.
>
> Det er måske næsten portabelt når man bruger de alm. sockets?

Ok, så vil du nok ikke få de store problemer.
Var det også c/c++?
Man skal være lidt vaks på portnumrenres opdeling i Linux, da de varierer
fra dist. til dist.
Nogle dists roder også i pakkerne når man programmerer RAW.
Den backlog værdi du sætter på din listening socket (hvor mange der må ligge
i kø) virker også lidt forskellig fra dist til dist.
Nogle tager værdien 0 for uendelig, og nogle for 0 i kø, nogle har en faktor
1:1 og nogle 1:1.5 (så en værdi på 10 ville give 15 ialt!)
Der er mange sjove historier!
Men det jeg har set på windows er meget lig det til linux!



Klaus Petersen (24-11-2003)
Kommentar
Fra : Klaus Petersen


Dato : 24-11-03 00:28

> Ok, så vil du nok ikke få de store problemer.
> Var det også c/c++?

Ja.

> Man skal være lidt vaks på portnumrenres opdeling i Linux, da de varierer
> fra dist. til dist.

Det forstår jeg ikke helt hvad du mener med. Opdeling af portnumre?

> Nogle dists roder også i pakkerne når man programmerer RAW.

Hmm... jeg troede at man brugte RAW til netop at undgå "roderi".

Men ellers er man vel fri til at bruge TCP/IP protokollen ?

> Den backlog værdi du sætter på din listening socket (hvor mange der må
ligge
> i kø) virker også lidt forskellig fra dist til dist.
> Nogle tager værdien 0 for uendelig, og nogle for 0 i kø, nogle har en
faktor
> 1:1 og nogle 1:1.5 (så en værdi på 10 ville give 15 ialt!)
> Der er mange sjove historier!
> Men det jeg har set på windows er meget lig det til linux!

Det lyder da lovende. Men så må man vel bare prøve sig frem hvis man kan
læse sig til det et eller andet sted



Zodiaz12 (24-11-2003)
Kommentar
Fra : Zodiaz12


Dato : 24-11-03 12:58


>
> Det forstår jeg ikke helt hvad du mener med. Opdeling af portnumre?

Du ved "Well known ports".. Port 20/21 til ftp, 80 til http.. osv.. den
grænse slutter ved 1023 så kommer dem som er "known".. (tror jeg det hedder)
Og så kommer der en grænse mere... det er den sidstnævnte.. som jeg ikke kan
huske.. som varierer!
Men det finder du nok ud af.. ellers er det ikke så vigtigt.. kernen finder
jo det selv!
Ville bare nævne nogle af de forskelle jeg kender til!
>
> > Nogle dists roder også i pakkerne når man programmerer RAW.
>
> Hmm... jeg troede at man brugte RAW til netop at undgå "roderi".
>
> Men ellers er man vel fri til at bruge TCP/IP protokollen ?
>

Ja, det troede jeg også.
Men det er vist kun BSDx som gør det.

> Det lyder da lovende. Men så må man vel bare prøve sig frem hvis man kan
> læse sig til det et eller andet sted
>
>
Jeps!
Det er "Max lækkert"!



Byrial Jensen (24-11-2003)
Kommentar
Fra : Byrial Jensen


Dato : 24-11-03 20:42

Zodiaz12 wrote:
>>Det forstår jeg ikke helt hvad du mener med. Opdeling af portnumre?
>
> Du ved "Well known ports".. Port 20/21 til ftp, 80 til http.. osv.. den
> grænse slutter ved 1023 så kommer dem som er "known".. (tror jeg det hedder)

Det kræver superbrugerrettigheder at lytte på TCP- og UDP-porte under
1024 på Unix-systemer inkl. herunder Linux. (Der blev for ikke så længe
siden opdaget i fejl i Linux-kernen som gjorde det nemt at omgå dette,
men det ændrer selvfølgelig ikke princippet).

> Og så kommer der en grænse mere... det er den sidstnævnte.. som jeg ikke kan
> huske.. som varierer!

Der er ingen specielle værdier derudover, bortset fra at et portnummer
ikke kan overskride 2 i 16. potens - 1 da det indkodes i 16 bit. Det
gælder selvfølgelig uafhængigt af styresystem.


Michael aka Slowhand (24-11-2003)
Kommentar
Fra : Michael aka Slowhand


Dato : 24-11-03 22:43


"Byrial Jensen" <bjensen@nospam.dk> skrev i en meddelelse
news:3FC25F01.6050005@nospam.dk...
> Zodiaz12 wrote:
> >>Det forstår jeg ikke helt hvad du mener med. Opdeling af portnumre?
> >
> > Du ved "Well known ports".. Port 20/21 til ftp, 80 til http.. osv.. den
> > grænse slutter ved 1023 så kommer dem som er "known".. (tror jeg det
hedder)
>
> Det kræver superbrugerrettigheder at lytte på TCP- og UDP-porte under
> 1024 på Unix-systemer inkl. herunder Linux. (Der blev for ikke så længe
> siden opdaget i fejl i Linux-kernen som gjorde det nemt at omgå dette,
> men det ændrer selvfølgelig ikke princippet).
>
> > Og så kommer der en grænse mere... det er den sidstnævnte.. som jeg ikke
kan
> > huske.. som varierer!
>
> Der er ingen specielle værdier derudover, bortset fra at et portnummer
> ikke kan overskride 2 i 16. potens - 1 da det indkodes i 16 bit. Det
> gælder selvfølgelig uafhængigt af styresystem.
>
Det er faktisk rigtigt at det kræver superbrugerrettigheder for at lytte på
Well-known ports!
Men det er vel egentlig godt nok... Det er nok også en af de store
forskelle!

Angående grænser! (Ikke for at være flueknepper! §8-D)
Her er hvad jeg mener!
1-1023 (Iana Well known), 1024-49151 (Iana registered ports), 49152-65535
(Iana Dynamic or private)
1-1023 (BSD reservered) 1024-5000 (BSD ephemeral) 5001-65535 (BSD servers
(nonprivileged)
Nogle klienter kræver en reserveret port som del af auth. for rlogin og rsh
disse er rresvpors (513-1023)
Solaris har øverste grænse 32768-65535 som ephemeral ports!
Det er egentlig heller ikke så vigtigt, kernen klarer jo det meste!
Ovenstående er taget fra (en iøvrigt lækker bog som kan anbefales) "Unix
network programming" Vol 1 Second ed. af W. Richard stevens
ISBN0-13-490012-x




Byrial Jensen (24-11-2003)
Kommentar
Fra : Byrial Jensen


Dato : 24-11-03 20:57

Zodiaz12 wrote:
> Man skal være lidt vaks på portnumrenres opdeling i Linux, da de varierer
> fra dist. til dist.

Hvis Linux-distributioner bruger porte en lille smule forskelligt, har
intet med hvordan man programmerer til Linux, at gøre.

> Nogle dists roder også i pakkerne når man programmerer RAW.

Hvad mener du? Det ligger vel næsten i begrebet "raw" at man selv skal
rode med bittene i IP-pakkerne, og selv kan vælge underprotokol. Man bør
ikke bruge RAW-sockets i portable programmer.

> Den backlog værdi du sætter på din listening socket (hvor mange der må ligge
> i kø) virker også lidt forskellig fra dist til dist.

Ikke fra distribution til distribution, men betydningen af backlog
argumentet i listen(2)-systemkaldet blev ændret i Linux 2.2 i forhold
til tidligere versioner.


Michael aka Slowhand (24-11-2003)
Kommentar
Fra : Michael aka Slowhand


Dato : 24-11-03 23:04


"Byrial Jensen" <bjensen@nospam.dk> skrev i en meddelelse
news:3FC26283.3030404@nospam.dk...
> Zodiaz12 wrote:
> > Man skal være lidt vaks på portnumrenres opdeling i Linux, da de
varierer
> > fra dist. til dist.
>
> Hvis Linux-distributioner bruger porte en lille smule forskelligt, har
> intet med hvordan man programmerer til Linux, at gøre.
>
> > Nogle dists roder også i pakkerne når man programmerer RAW.
>
> Hvad mener du? Det ligger vel næsten i begrebet "raw" at man selv skal
> rode med bittene i IP-pakkerne, og selv kan vælge underprotokol. Man bør
> ikke bruge RAW-sockets i portable programmer.
>
> > Den backlog værdi du sætter på din listening socket (hvor mange der må
ligge
> > i kø) virker også lidt forskellig fra dist til dist.
>
> Ikke fra distribution til distribution, men betydningen af backlog
> argumentet i listen(2)-systemkaldet blev ændret i Linux 2.2 i forhold
> til tidligere versioner.
>
Hehe, og jeg troede jeg var flueknepper! §8-D

Du har ret at man normalt ikke tænker over hvilke porte Linux kernen vælger!

Når man programmere RAW vælger man netop ikke underprotokol, hvis du altså
tænker på TCP/UDP for det er enten TDC/UDP/RAW...
Men det er rigtigt at man rigtig kan lege med hver bit i sin IPPDU.

Jeg tør ikke sige hvor kompatibel RAW programmering på forskellige platforme
men i de fleste tilfælde man kan programmere sig ud af systemafhængighed!
Raw bruges faktisk meget, ping mv. er lavet med raw!!
Her er lige en liste over baclog fra div (Taget fra samme bog)

Backlog | AIX/4.2, BSD/Os3.0 | DUnix 4, Linux 2.0.27, UWare 2.1.2 | HP-UX
10.30 | SunOS 4.1.4 | Solaris 2.5.1 | Solaris 2.6
0 1 0
1 1 1 1
1 2 1
1 2 2 3
2 4 2
3 4 3 4
3 5 3
4 5 4 6
4 7 4
6 7 5 7
5 8 5
7 8 6 9
6 10 6
9 8 7 10
7 11 7
10 8 8 12
8 13 8
12 8 9 13
9 14 9
13 8 10 15
10 16 10
15 8 11 16
11 17 11
16 8 12 18
12 19 12
18 8 13 19
13 20 13
18 8 14 21
14 22 14
19 8 15 22


Undskyls at det er så skævt!
Men betydningen af baglog har desværre været skrevet forket, da det faktisk
varierer som i kan se!
Første kolonne er værdien som er sat.. De resterende kolloner er hvor mange
der rent faktisk får lov at ligge i kø.

Som sagt er det en rigtig god bog på over 1000 sider og går virkelig i
detaljer.
Hvis der er nogen vil i detaljer (også i raw) så er den bog værd at bruge
penge på!
Dog er den vist skrevet på en lidt ældre Posix!



Michael aka Slowhand (24-11-2003)
Kommentar
Fra : Michael aka Slowhand


Dato : 24-11-03 23:15


"Michael aka Slowhand" <noden@sol.dk> skrev i en meddelelse
news:3fc28059$0$9799$edfadb0f@dread14.news.tele.dk...
>
> "Byrial Jensen" <bjensen@nospam.dk> skrev i en meddelelse
> news:3FC26283.3030404@nospam.dk...
> > Zodiaz12 wrote:
> > > Man skal være lidt vaks på portnumrenres opdeling i Linux, da de
> varierer
> > > fra dist. til dist.
> >
> > Hvis Linux-distributioner bruger porte en lille smule forskelligt, har
> > intet med hvordan man programmerer til Linux, at gøre.
> >
> > > Nogle dists roder også i pakkerne når man programmerer RAW.
> >
> > Hvad mener du? Det ligger vel næsten i begrebet "raw" at man selv skal
> > rode med bittene i IP-pakkerne, og selv kan vælge underprotokol. Man bør
> > ikke bruge RAW-sockets i portable programmer.
> >
> > > Den backlog værdi du sætter på din listening socket (hvor mange der må
> ligge
> > > i kø) virker også lidt forskellig fra dist til dist.
> >
> > Ikke fra distribution til distribution, men betydningen af backlog
> > argumentet i listen(2)-systemkaldet blev ændret i Linux 2.2 i forhold
> > til tidligere versioner.
> >
> Hehe, og jeg troede jeg var flueknepper! §8-D
>
> Du har ret at man normalt ikke tænker over hvilke porte Linux kernen
vælger!
>
> Når man programmere RAW vælger man netop ikke underprotokol, hvis du altså
> tænker på TCP/UDP for det er enten TDC/UDP/RAW...
> Men det er rigtigt at man rigtig kan lege med hver bit i sin IPPDU.
>
> Jeg tør ikke sige hvor kompatibel RAW programmering på forskellige
platforme
> men i de fleste tilfælde man kan programmere sig ud af systemafhængighed!
> Raw bruges faktisk meget, ping mv. er lavet med raw!!
> Her er lige en liste over baclog fra div (Taget fra samme bog)
>
> Backlog | AIX/4.2, BSD/Os3.0 | DUnix 4, Linux 2.0.27, UWare 2.1.2 | HP-UX
> 10.30 | SunOS 4.1.4 | Solaris 2.5.1 | Solaris 2.6
> 0 1 0
> 1 1 1 1
> 1 2 1
> 1 2 2 3
> 2 4 2
> 3 4 3 4
> 3 5 3
> 4 5 4 6
> 4 7 4
> 6 7 5 7
> 5 8 5
> 7 8 6 9
> 6 10 6
> 9 8 7 10
> 7 11 7
> 10 8 8 12
> 8 13 8
> 12 8 9 13
> 9 14 9
> 13 8 10 15
> 10 16 10
> 15 8 11 16
> 11 17 11
> 16 8 12 18
> 12 19 12
> 18 8 13 19
> 13 20 13
> 18 8 14 21
> 14 22 14
> 19 8 15 22
>
>
> Undskyls at det er så skævt!
> Men betydningen af baglog har desværre været skrevet forket, da det
faktisk
> varierer som i kan se!
> Første kolonne er værdien som er sat.. De resterende kolloner er hvor
mange
> der rent faktisk får lov at ligge i kø.
>
> Som sagt er det en rigtig god bog på over 1000 sider og går virkelig i
> detaljer.
> Hvis der er nogen vil i detaljer (også i raw) så er den bog værd at bruge
> penge på!
> Dog er den vist skrevet på en lidt ældre Posix!
> UPS, kolonne antallet blev lige halveret da jeg postede!
Sorry!

men kan man se tabellen i bogen :
"Unix
network programming" Vol 1 Second ed. af W. Richard stevens
ISBN0-13-490012-x
Som nævnt er det ikke den nyeste Posix ANSI og STL men den giver et godt
fundament og det er ikke sønderligt svært at rette det som er lavet om i 98
og i år!
Der findes også en Volume 2 som hedder "Unix Netvork Programming" som går i
detaljer med "Interproces communication" også en nice bog!



Michael aka Slowhand (23-11-2003)
Kommentar
Fra : Michael aka Slowhand


Dato : 23-11-03 17:07


"Klaus Petersen" <spectual2@get2net.dk> skrev i en meddelelse
news:Hg3wb.2987$Ff3.495@news.get2net.dk...
>
> > Jeg har nogle enkelte eksempler liggende på http://help.darknet.dk men
du
> > skal være logget ind for at se dem!
> > Du er velkommen til at stille spørgsmål der også!
> > Det er skarbede eksempler og man kunne godt have lavet dem smartere men
> for
> > mange idiomer, wrappers mv. gør det bare sværere at overskue som ny
> > socketprogrammør!
>
> Det har du ret i. Godt nok er jeg ikke helt ny socketprogrammør - har
> programmeret flere typer sockets på en windows platform.
>
> Det er måske næsten portabelt når man bruger de alm. sockets?
>
>
Ja til dels..
Nu er jeg ikke haj på windows.. men så vidt jeg husker var der noget MFC
sockets.. som ikke er direkte kompatibel.(syntax mæssigt).
Men det kan være der kommer nogle kommentarer til det fra andre som har
noget mere erfaring på windows!
Men du får ingen problemer i linux så!



Klaus Petersen (24-11-2003)
Kommentar
Fra : Klaus Petersen


Dato : 24-11-03 00:29

> Ja til dels..
> Nu er jeg ikke haj på windows.. men så vidt jeg husker var der noget MFC
> sockets.. som ikke er direkte kompatibel.(syntax mæssigt).

Nu holder jeg mig så også langt væk fra MFC ... yikes

> Men det kan være der kommer nogle kommentarer til det fra andre som har
> noget mere erfaring på windows!
> Men du får ingen problemer i linux så!

Jeg glæder mig til at komme i gang.



Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408183
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste