--- [EMAIL PROTECTED] schrieb: > Jam 10:12 tadi, toto bilang:
> 
> 
> > hmmm...kayaqnya emang mesti dilakuin secara manual di aplikasi :)
> > atau kalo enggak client server aplikasi-nya dibuat untuk menerima
> beberapa
> > command sekaligus dalam
> > satu string (misal : send(sockfd, "request1;request2;request3;",
> > blablabla)). sehingga di pihak penerima ketika menerima-nya tetap
> sebagai 1
> > request, untuk kemudian baru dipecah3 menjadi 3 request.
> > (mirip execute command from linux shell)
> 
> nah ini yang susah, untuk menggabung string itu kan butuh buffer
> karena programnya multithread, jadi nggak bisa sembarangan pake
> buffer 
> global process
> trus lebih complicated lagi.. fungsi yang ngirim itu juga nunggu 
> input dari stream lain, jadi nggak boleh nge-lock buffer global (bisa
> 
> starvation kalo nuggunya kelamaan)
> kalo malloc sendiri, karena nggak tau besar totalnya berapa, jadi
> harus 
> realloc terus setiap dapet data baru, takutnya nanti coredump :)
> 
> 
> intinya sih kalo ada fungsi layer bawahnya yang bisa ngebuffer dulu..
> 
> 
Dari pengertian yang saya dapat, problemnya adalah paket harus di
buffering dulu, nah kalau sudah komplet baru di send, karena paket ini
terdiri dari data-data kecil yang dikirim oleh thread yang berbeda2. 
Kalau diansumsikan bahwa urutan data di paket sudah benar, maka masalah
bisa dipecahkan dengan protocol. Jadi setiap data kecil yang dikirim
mempunyai header yang panjangnya selalu sama, nah dalam header ini
terdapat informasi sebenarnya dari data. Jadi waktu receive, baca
headernya dulu, size paket kan ketahuan, nah baru headernya di parse,
misalnya data selanjutnya berapa sizenya dsb dsb. Jadi enggak harus
menggunakan buffering dulu. Prinsip ini juga banyak dipakai dalam
protokol seperti DCC, SOCK dsb.

Eko

__________________________________________________________________

Gesendet von Yahoo! Mail
http://mail.yahoo.de

-- 
Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3

Kirim email ke