--- [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
