Sockets 用于多个客户端的GIO套接字客户端服务器
我想实现一个giosocket客户机-服务器程序,在这个程序中,服务器最多可以同时服务5个客户机。这可能吗?如何修改以下标准服务器以允许多个客户端以线程安全的方式连接?传入的_callback()函数将接收来自客户端的数据,并进行一些处理和响应确认,这将一直持续到客户端发送“退出”消息,此时服务器将关闭客户端连接。我想为服务器一次最多5个连接执行此操作。可能吗?如果可能,如何实现Sockets 用于多个客户端的GIO套接字客户端服务器,sockets,client,gio,Sockets,Client,Gio,我想实现一个giosocket客户机-服务器程序,在这个程序中,服务器最多可以同时服务5个客户机。这可能吗?如何修改以下标准服务器以允许多个客户端以线程安全的方式连接?传入的_callback()函数将接收来自客户端的数据,并进行一些处理和响应确认,这将一直持续到客户端发送“退出”消息,此时服务器将关闭客户端连接。我想为服务器一次最多5个连接执行此操作。可能吗?如果可能,如何实现 int main (int argc, char **argv) { /* initialize glib */
int
main (int argc, char **argv)
{
/* initialize glib */
g_type_init();
GError * error = NULL;
/* create the new socketservice */
GSocketService * service = g_socket_service_new ();
/* connect to the port */
g_socket_listener_add_inet_port ((GSocketListener*)service,
1500, /* your port goes here */
NULL,
&error);
/* don't forget to check for errors */
if (error != NULL)
{
g_error (error->message);
}
/* listen to the 'incoming' signal */
g_signal_connect (service,
"incoming",
G_CALLBACK (incoming_callback),
NULL);
/* start the socket service */
g_socket_service_start (service);
/* enter mainloop */
g_print ("Waiting for client!\n");
GMainLoop *loop = g_main_loop_new(NULL, FALSE);
g_main_loop_run(loop);
return 0;
}
神奇的事情应该发生在
传入的_回调中,以尽可能快的速度返回并将工作推到另一个GThread
(或者更好的是,一个GThreadPool
)