Pozdrav!
Više mi zapravo treba pomoć oko funkcije send() nego oko zadatka.
Posve se pogubih oko buffera u toj funkciji. I još zaboravih ili pobrkah neke stvari oko pointera i adresa i nizova.
Moj tok misli:
Imam niz doublova koje moram poslati serveru. Send vraća broj poslanih bajtova. Kao argument prima buffer a to je "adresa (najčešće polja znakova) podataka koje šaljemo". Mogu poslati jednostavno naziv niza (buffer) jer je to adresa prvog elementa u nizu.
Charovi imaju 1B pa kad mi send vrati vrijednost 4, odmah znam da se poslalo 4 chara tj 4 elementa u nizu, pa mogu pisati da u idućem slanju šalje buffer+poslano, ili &buffer[poslano], pri čemu je poslano = send(...).
Sad, kad šaljem doublove, ako mi je funkcija send vratila vrijednost 4, to zapravo znači da se poslao 1 double, i u idućem slanju zapravo šaljem buffer + i, tj &buffer[i], gdje je i = poslano/4?
I u tom slučaju mi je argument duljina_buffera zapravo 4*duljina mog niza kojeg šaljem?
Je l to ok razmišljanje?
Edit: Nije. Šaljem onaj bajt koji piše na adresi buffer+poslano (ili više bajtova koji slijede nakon tog prvog). Duljina buffera je ipak 4x veća jer svaki double zauzima 4 uzastopna bajta.
I kako točno radi send()? Šalje li on npr element po element niza, ili n bajtova po n bajtova, ili pošalje odjednom 100B u prvoj rundi, pa u idućoj npr 120, pa 50, itd, svaki put koliko uspije?