Socket programmering: Ændinrg af send buffer størrelse
Hejsa.Jeg ønsker at sende en datamængde (100 kb. ca) over en asynkron stream socket. Jeg har kaldt WSAASyncselect med (FD_CONNECT | FD_READ | FD_WRITE).
Problemet opstår, når jeg ønsker at sende mine data, fordi Windows tilsyneladende gør det i ét hug. Det er normalt meget fint, men i mit særlige tilfælde ønsker jeg, at selvom jeg forsøger at sende 100 kb ad gangen, skal send() kun sende 2 kb og derpå give mig en FD_WRITE event, så jeg kan fortsætte med at sende. Jeg vil med andre ord gerne have sendt mine data i små klumper i stedet for hele molevitten på én gang. Grunden til at jeg ønsker dette er, at min applikation skal køre på en anden platform, hvor jeg *ved*, at man kun kan sende 1-2 kb ad gangen, og den opførsel vil jeg gerne emulere på Windows.
Jeg har forsøgt at kaldet setsockopt() og sætte SO_SNDBUF til lave værdier, men det er Windows tilsyneladende ligeglad med. Jeg har også forsøgt med TCP_NODELAY for at slå Nagle-algoritmen fra, men heller ikke det havde nogen større effekt.
Forslag modtages med kyshånd!
Mvh. Jan Rosgaard