Yup, setuju. Satu2nya cara yg. benar emang dengan cara pembufferan di client, trus dari stream yg. diterima, dicari batas2 recordnya.
Cuman, btw, program di bawah ada bugnya tuh. Gimana kalau line-nya nggak diterima lengkap? Gimana kalau dipindah idx=0 dari for() ke sebelum while(1)? jagad wrote: > > Process send(...) seperti diatas belum tentu dikirm dalam 3 packet, disisi > penerima bisa jadi cuman perlu satu kali recv(...). > Tetapi karena hal tersebut tidak bisa dijadikan pegangan maka buffering > disisi penerima memang sebuah keharusan. Kalau anda mengirimkan data dalam > betuk 'Formatted Text' (misal; ASCII, HTML, dll) maka anda bisa melakukan > buffering dan text parsing dengan mencari karakter CR-LF atau LF sebagai > tanda satu line text telah diterima. > Berikut ini saya coba berikan contoh pseudo-code: > > char* buff; > char* bline; > buff = malloc(BUFF_SIZE+1); > bline=malloc(MAX_LINESIZE); > *(buff + BUFF_SIZE) = 0x0; > > while (1){ > nlen = recv(sockfd, buff, BUFF_SIZE); > if (nlen = SOCKET_ERROR) break; > > for (i=0, idx=0; i < nlen; i++, idx++){ > *(bline+idx) = *(buff+i); > if (*(buff+i) = > { > *(bline+idx+1) = 0x0; > doprocessline(bline); > idx = 0; > } > } > } > > Semoga bisa membantu. > > Jagad. > -- cheers, Bennylp -- Utk berhenti langganan, kirim email ke [EMAIL PROTECTED] Informasi arsip di http://www.linux.or.id/milis.php3