>
> misalnya suatu program ngirim ke socket beberapa kali:
>
> send(sockfd, buff1, len1);
> send(sockfd, buff2, len2);
> send(sockfd, buff3, len3);
>
> inikan nanti dikirim jadi 3 paket sendiri2
> karena rada susah nanganin buffering diaplikasi jadi ngirimnya beberapa
> kali
>
> ada nggak option di socket yang bisa nge-buffer dulu string yang dikirim
> biar nanti jadi cuma satu paket yang dikirim
>

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.



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

Kirim email ke