首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于多个客户端的GIO套接字客户端服务器

用于多个客户端的GIO套接字客户端服务器
EN

Stack Overflow用户
提问于 2013-06-07 14:00:59
回答 1查看 567关注 0票数 0

我想实现一个GIO套接字客户端服务器程序,其中服务器可以同时服务于5个客户端。这有可能吗?如何修改以下标准服务器以允许多个客户端以线程安全的方式连接?incoming_callback()函数将从客户端接收数据,并进行一些处理并响应确认,这将一直持续到客户端发送“退出”消息,此时服务器将关闭客户端连接。我希望为服务器一次最多连接5个连接。这是可能的吗?如果是的话,是如何实现的?

代码语言:javascript
复制
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;
}
EN

回答 1

Stack Overflow用户

发布于 2013-06-11 23:55:20

魔法应该发生在你的incoming_callback中,以最快的速度返回并将工作推入另一个GThread (或者更好的是,一个GThreadPool)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16977250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档