Premiär! Fyndchans i SweClockers Månadens Drop

berkeley socket || connection descriptor

Permalänk
Medlem

berkeley socket || connection descriptor

Hej.

Jag vill kolla om jag förstått rätt.

När man gör en socket via system anrop:
socket() och så vidare...

I C/C++ bibiloteket <sys/socket.h> vist används berkeley sockets då (Ubuntu 16.04 används om det spelar roll)? Om ja, vad är då en "connection descriptor"?

Tack för svar!

Visa signatur

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6

Permalänk
Medlem
Skrivet av asdfgh:

Hej.

Jag vill kolla om jag förstått rätt.

När man gör en socket via system anrop:
socket() och så vidare...

I C/C++ bibiloteket <sys/socket.h> vist används berkeley sockets då (Ubuntu 16.04 används om det spelar roll)? Om ja, vad är då en "connection descriptor"?

Tack för svar!

Jag tänker inte lösa din skoluppgift åt dig men på https://en.wikipedia.org kan du hitta mycket matnyttigt om Berkeley Sockets.

Visa signatur

WS: MSI B350M Mortar | AMD Ryzen 7 1700 | PH-TC14PE | 32GB DDR4 3000MHz | 1TB Kingston NV2 | Intel Arc A750 8GB | 2*BenQ G2420HDB
Router: Gigabyte GA-870-UD3 | AMD Phenom II x6 1055t @ 2600MHz, 1.25V | 12GB DDR3 | 2*250GB HDD @ RAID1 | 4TB HDD
Laptop: Thinkpad X220 4291-QF6

Permalänk
Medlem

Tack för tipset om sidan där de säger socket descriptor och file descriptor men säger inte ett s**t om någon av dessa är samma som en connection descriptor...

Om du bara antar att alla frågor är någon skoluppgift kanske det är högtid för dig att sluta vara på ett forum då du lika gärna kunde ha gjort en länk till denna.

Visa signatur

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6

Permalänk
Medlem
Skrivet av asdfgh:

Tack för tipset om sidan där de säger socket descriptor och file descriptor men säger inte ett s**t om någon av dessa är samma som en connection descriptor...

Om du bara antar att alla frågor är någon skoluppgift kanske det är högtid för dig att sluta vara på ett forum då du lika gärna kunde ha gjort en länk till denna.

Den besvarar åtminstone frågan om Berkeley Sockets används i *nix.
Var har du fått just orden "Connection descriptor" ifrån?
En file/socket descriptor är i allt väsentligt en vanlig int som berättar vilken koppling i operativsystemets lista som ska användas för den operation du ber om i din kod.

Edit: här har du ännu mer information; https://www.gnu.org/software/libc/manual/html_node/Sockets.ht...

Skickades från m.sweclockers.com

Visa signatur

WS: MSI B350M Mortar | AMD Ryzen 7 1700 | PH-TC14PE | 32GB DDR4 3000MHz | 1TB Kingston NV2 | Intel Arc A750 8GB | 2*BenQ G2420HDB
Router: Gigabyte GA-870-UD3 | AMD Phenom II x6 1055t @ 2600MHz, 1.25V | 12GB DDR3 | 2*250GB HDD @ RAID1 | 4TB HDD
Laptop: Thinkpad X220 4291-QF6

Permalänk
Medlem

när man kör:

man gnutls_transport_set_ptr

Så står det: "In berkeley style sockets this function will set the connection descriptor.". Så då undrar jag jag ju vad en connection descriptor är.

Visa signatur

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6

Permalänk
Datavetare
Skrivet av asdfgh:

när man kör:

man gnutls_transport_set_ptr

Så står det: "In berkeley style sockets this function will set the connection descriptor.". Så då undrar jag jag ju vad en connection descriptor är.

Tittade som hastigast på GnuTLS och vad gnu_transport_set_ptr() faktiskt gör. Min gissning är att man använder termen "connection descriptor" i syfte att belysa att väldigt få krav ställs på den underliggande transportmekanismen utöver att man ska kunna använda vanliga filoperationer som read()/write().

Trots att de flesta OS är utvecklade i C använder de väldigt många OOP-koncept. I/O-systemet är ett lysande exempel på detta där alla typer av I/O-backends typiskt stödjer just read()/write() , så det är alla i någon mening underklasser till "generic I/O".

Sockets är sedan en underklass som har lite speciella funktioner, som t.ex. accept(), connect(), listen() m.fl. Dessa operationer kräver just en filtyp av underklassen "sockets", de är inte meningsfulla för t.ex. filer och pipes.

Så i korthet: kör man GnuTLS så skulle man lika gärna kunna skicka in en fildeskriptor skapad med pipe() som skapad med socket(). Det enda GnuTLS bryr sig om är att data som skrivs på den deskriptor man ger till gnutls_transport_set_ptr() kan läsas av "den andra sidan", irrelevant hur man rent konkret flyttar dessa bytes.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer