Avatar billede tax Nybegynder
06. december 2001 - 13:12 Der er 5 kommentarer og
1 løsning

Trådbaseret socketprogrammering

Jeg har rodet lidt med grundlæggende sockets.
(unix typen ell. dem der ikke bruger en windowhandler)

Jeg kan oprette en socket og sende tata frem og tilbage efter ping-pong princippet. Dette er fint nok, men jeg er interesseret i at lave en asynkron kommunikation. Dvs. at jeg skal have en tråd der ikke blokerer når der ikke sendes eller modtages.

Er der nogen der kender et godt eksempel?

Jeg synes at det er svært at finde noget relevant på søgemaskinerne.
Avatar billede tax Nybegynder
06. december 2001 - 14:09 #2
Skal man bruge 2 sockets for at sende asynkront?
Avatar billede alvion Nybegynder
06. december 2001 - 15:33 #3
Nej en enkelt kan gøre det.
Avatar billede tax Nybegynder
06. december 2001 - 17:06 #4
Hvordan gøres det når BSD sockets blokerer programmet under read?

Er der en modtagefunktion, der timer ud så den ikke blokerer.

Mit ønske er at få duplex kommunikation på benene.

Sådan som det er nu bruger jeg ping pong kommunikation og sender en masse tomme beskeder.
Avatar billede alvion Nybegynder
06. december 2001 - 19:29 #5
Tricket er, at du først skal læse fra din socket, når du har fået en WM_SOCKET_NOTIFY message fra Windows. Den indeholder i lParam
- en eventkode (de mindste 16 bit)
- en errorkode (de største 16 bit)

Eventkoden kan bla. være følgende:

FD_CONNECT - Svar tilbage om connection er gået godt (kan ses i errorkoden)

FD_READ - Der ligger data i \"indkøen\", som du kan læse fra din socket.
Avatar billede tax Nybegynder
06. december 2001 - 22:12 #6
Det ved jeg godt, men jeg har ikke et vindue til rådighed. Jeg skal implementere det hele i et objekt med sin egen tråd.

Objektet skal så have adgang til to en slags inbox og en outbox, som andre klasser har adgang til.

Er der en BSD kommando der spørger om der er kommet data ind, og returnerer.

På den måde kunne jeg checkke om der er kommet data springe ud og checkke om der er skal sendes data.

Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester