Thanks... Ronny, superbiji, Nafis & Andrew... nanti sy coba neh....

The functions select and pselect wait for a number of file descriptors
      to change status.

Saya baru tahu neh kalau select dpt digunakan utk memeriksa koneksi, soalnya biasa dipake untuk check time out doank.

Dd~

Andrew Hadinyoto wrote:

Hi,

Nafis Faisal wrote:

ada cara agak repot...
1. bikin daemon yg dengerin setiap FIN(close request) dari server.
atau,

2. mungkin sudah ada system signalling internalnya linux buat deteksi FIN yang masuk...(yang ini saya ga tau bener2 ada apa gak di c linux)


Bisa dideteksi dengan "select" dan "read" (man select, man read).

Contoh programnya kira2 begini:

fd_set fdset; /* dipake oleh select; file descriptor yg perlu di "check" */
char buf[256];  /* buffer buat read... */
int ret;
....

FD_ZERO(&fdset);
FD_SET(socketku, &fdset); /* anggap socketku adalah socket yg terkoneksi dengan server */
select(socketku, &fdset, NULL, NULL, NULL);
if (FD_ISSET(socketku, fdset)) {
   /* ada data di socket */
   ret = read(socketku, buf, 256);
   if (ret == 0)
printf("Koneksi terputus. Server ngasih FIN\n"); /* kena disconnect */
   if (ret == -1)
printf("Koneksi terputus. Server ngirim RST\n"); /* server crash kali? */
   if (ret > 0)
      printf("Masih ok\n");
}

Contoh di atas pake select untuk read aja. Select juga bisa untuk write. Jadi bisa handle read/write beberapa file descriptors tanpa pake "fork".

Moga2 berguna.

Salam,
Andrew...





--
Berhenti langganan: [EMAIL PROTECTED]
Arsip dan info: http://linux.or.id/milis

Kirim email ke