PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verständnisfrage Sockets und write()



moddingfan
25-10-2007, 18:19
Hallo,
ich habe im Moment ein Problem, ich soll ein MP3-Streamer auf Java portieren und habe nun ein kleines Problem.
Java stellt nicht das Problem dar, sondern der Writebefehl von unten.


int sock=socket(PF_INET,SOCK_STREAM,0);
write(sock,buf,DATA_CHUNK_SIZE);

Das hier ist der C Code den ich portieren soll.

buf entspricht einem void zeiger auf einen Speicher der mit malloc reserviert wurde.
DATA_CHUNK_SIZE ist 4096
Meine Frage ist die, wann schreibt write in den Puffer, bzw. erkennt er z.B. ob der Client alle Daten aus dem Puffer gelesen hat?
Leider haben meine ganzen Internetrecherchen darüber nichts eindeutiges zu tage gebracht und ich bräuchte die Information um die Portierung weiter voran zu treiben.

Mfg
Moddingfan

P.S. Ich weiß, dass das das C/C++ UnterForum ist, doch hat jemand noch nen Tipp für die Java Portierung des Befehls?
Denn bislang schickt mir der Rechner die Daten viel zu schnell raus (mit Java) und deshalb hat der StreamClient ein Problem .

anda_skoa
26-10-2007, 15:42
Wenn der Socket normal, also Blocking, geöffnet ist, müsste der write() Befehl ansich so lange blockieren, bis die ganzen Daten geschrieben werden konnten, d.h. bis sie entweder im Ausgansgpuffer des lokalen Sockets, oder im Eingangspuffer des Zielsockets Platz haben.

Ciao,
_