Re: Refreshing of the text



Hi Marc,

mberbel wanadoo es wrote:
I'm using GTK and libpcap (library dedicated to provide routines for packet caputre) to make a sniffer with GUI in C. I have a problem, when I start to sniff, the program comes into a function from which will get out in the moment that a certain number of packets are sniffed.

In that function, I write in a window the content of every packet. The problem is that if I want to sniff 1000 packets, all the text will become visible once the 1000 packets are visible, and not ever time a packet is received.

Is there any way to modify this ?? I would like to show the text every time that I get a packet.

You have two solutions, I think:

- Every time a packet comes in, update your widgets and call

   while( g_main_context_iteration( NULL, FALSE ) )
     ;

 this will make the screen repaint.

Of course you may drop packets while you do this, since the repaint will take some time. Also you will need to be careful
 that buttons cannot be clicked twice, since you will then have
 two main loops.

- Make a background thread to do the sniffing with g_thread_create(). Make
 a pipe, and have the background thread write its results to the pipe.
 Do gtk_input_add_full() to make your foreground thread wake up when things
 are written to the pipe. When stuff arrives, update the screen.

John



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]