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

Kirim email ke