2010-01-23 1 views
1

Не могли бы вы рассказать мне, есть ли какой-либо пример использования GIO Server Socket (тот, который я могу открыть порт и прослушать запросы сокетов)? Я хотел бы использовать его для «дистанционного управления» моим приложением GTK +.Пример GIO для открытия порта сервера?

ответ

2

Я думаю, что вы должны сделать что-то вроде этого:

#define MY_PORT 47110 

/* Listener callback, this gets called by GTK+ when 
* there's socket activity to handle. 
*/ 
static gboolean cb_listener(GIOChannel *source, GIOCondition condition, gpointer data 
{ 
    switch(condition) 
    { 
    case G_IO_IN: 
    /* There's data to be read. */ 
    break; 
    default: 
    /* An error has occured, or socket is closed. */ 
    return FALSE; /* This tells GIO to remove the source, might be drastic. */ 
    } 
    return TRUE; /* This tells GIO that all is fine. */ 
} 

Тогда в другом месте (в функции, может быть main()):

GSocketListener *listener; 

listener = g_socket_listener_new(); 
g_socket_listener_add_inet_port(listener, MY_PORT, NULL, NULL); 
g_io_add_watch(G_IO_CHANNEL(listener), G_IO_IN | G_IO_ERR | G_IO_HUP, cb_listener, NULL); 
Смежные вопросы