【问题标题】:AIX 7.2 GLib-GObject signal incoming is invalidAIX 7.2 GLib-GObject 信号传入无效
【发布时间】:2018-11-30 12:56:11
【问题描述】:

我对 Linux 工具箱中的 glib2.56.1-2 有疑问。我找到了简单的 TCP 服务器示例:

int main (int argc, char *argv[])
{
  GError * error = NULL;

  /* create the new socketservice */
  GSocketService* service = g_socket_service_new ();

  /* connect to the port */
  struct sockaddr_in serv_addr;
  memset(&serv_addr, 0x0, sizeof(serv_addr));
  serv_addr.sin_family = AF_INET;
  serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
  serv_addr.sin_port = htons(8000);

  g_socket_listener_add_address ((GSocketListener*)service,
    g_socket_address_new_from_native(&serv_addr, sizeof(serv_addr)),
                                     G_SOCKET_TYPE_STREAM,
                                     G_SOCKET_PROTOCOL_TCP,
                                     NULL,
                                     NULL,
                                     &error);

  /* 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;
}

但它给了我以下警告:

(process:9633862): GLib-GObject-WARNING **: 12:48:11.025: gsignal.c:2523: signal 'incoming' is invalid for instance '110015730' of type 'GSocketService'

连接似乎已打开,但由于您在上面看到的信号警告,无法处理传入数据。你有什么想法吗?

问候,吉里。

【问题讨论】:

  • 如果在valgrind下运行,有没有内存损坏?
  • 我发现了另一个问题。我看不出有任何显着差异(乍一看),但您可以自己看看:SO: GIO socket-server / -client example.
  • 请编辑您的帖子:添加#include 行和用于创建可执行文件的命令。
  • 感谢您的 cmets。当我从链接器标志中删除 -Wl,-G 时,它工作正常!

标签: c tcp aix glib gio


【解决方案1】:

我从链接器标志中删除了 -Wl,-G。那工作得很好。谢谢大家。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    相关资源
    最近更新 更多