Re: How to use socket conditions ?



Not sure how glib socket handles this, but typically for socket disconnects you'll get an indication that 
there is content ready to read on the socket (say, from a select call) but when you read from the socket, it 
reports zero bytes and no errors. That's the indication that the other side hung up. 

--carl

On Jul 11, 2015, at 12:09 AM, Jacques Pelletier <jpelletier ieee org> wrote:

Hi,

I'm using a glib socket: when a client (glib) is connected to a server, the client doesn't get the HUP 
messages when the server closes its connection.

Here is my code below:

gboolean SocketPollRead(gpointer data)
{
 switch (g_socket_condition_check(ptSocket,G_IO_IN | G_IO_ERR | G_IO_HUP)) // doc says G_IO_HUP isn't 
needed here
   {
       case G_IO_IN:
           /* Works fine, no problems */
           ptSocketInNbBytes = g_socket_receive(ptSocket,ptSocketInBuffer,1024,NULL,NULL);
           GuiTerminalPutInput((unsigned char *) ptSocketInBuffer,ptSocketInNbBytes);
           break;
       case G_IO_ERR:
           /* I don't get any printed messages when server disconnects */
           fprintf(stderr,"Socket ERR\n");
           SocketClose();
           break;
       case G_IO_HUP:
           /* I don't get any printed messages when server disconnects */
           fprintf(stderr,"Socket HUP\n");
           SocketClose();
           break;
       default:
       ;
   }

 return Poll_Socket;
}

How do I make this work?

Thanks!

JP

_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list gnome org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


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