gpt4 book ai didi

c - 使用 glib/gio 指定 ipv6 接口(interface)

转载 作者:行者123 更新时间:2023-11-30 17:41:56 27 4
gpt4 key购买 nike

我正在尝试使用 Gnome glib/gio C 库创建一个客户端程序以通过 IPv6 连接到服务器。我的服务器盒子有一个链接本地 IPv6 地址:

inet6 addr: fe80::2d0:c9ff:feda:99e0/64 Scope:Link

因此,要访问它,我必须告诉客户端软件要使用哪个接口(interface)(在本例中为 eth0)。因此,以下工作有效(使用端口 1500):

nc -6 fe80::2d0:c9ff:feda:99e0%eth0 1500

在 glib 中,使用 %eth0 表示法违反了 URI 表示法:

(process:31159): GLib-GIO-WARNING **: Invalid URI 'none://[fe80:0:0:0:2d0:c9ff:feda:99e0%eth0]:1500'

我查看了代码,它显然希望看到百分比转义符号(即字符“%25”),但我似乎无法获得正确的格式:

** (process:5741): ERROR **: Invalid URI 'none://[fe80:0:0:0:2d0:c9ff:feda:99e0%25eth0]1500'

那么,有人知道如何指定接口(interface)吗?

编辑:这是代码

// gchar test[255] = "fe80:0:0:0:2d0:c9ff:feda:99e0%eth0";
// gchar test[255] = "fe80:0:0:0:2d0:c9ff:feda:99e0\%eth0";
// gchar test[255] = "fe80:0:0:0:2d0:c9ff:feda:99e0\x25eth0";
// gchar test[255] = "fe80:0:0:0:2d0:c9ff:feda:99e0\%%25eth0";
gchar test[255] = "[fe80:0:0:0:2d0:c9ff:feda:99e0\%%eth0]";

connection = g_socket_client_connect_to_uri (client,
test,
1500,
NULL,
&error);

编辑 2:完整代码(使用 MichaelHampton 的输入):

#include <glib.h>
#include <gio/gio.h>

int
main (int argc, char *argv[])
{
/* initialize glib */
g_type_init ();

GError * error = NULL;

/* create a new connection */
GSocketConnection * connection = NULL;
GSocketClient * client = g_socket_client_new();

connection = g_socket_client_connect_to_host (client,
(gchar*)"fe80::5054:ff:fe1f:6b6c\%br0",
1500, /* your port goes here */
NULL,
&error);

/* don't forget to check for errors */
if (error != NULL)
{
g_error (error->message);
}
else
{
g_print ("Connection successful!\n");
}

return 0;
}

最佳答案

啊,你调用了错误的函数。您应该使用 g_socket_client_connect_to_host 直接连接到主机和端口。

这是一个工作示例:

 connection = g_socket_client_connect_to_host (client,
(gchar*)"fe80::5054:ff:fe1f:6b6c\%br0",
1500, /* your port goes here */
NULL,
&error);

完整的示例代码(看起来您正在使用)位于相关问题中:GIO socket-server / -client example

关于c - 使用 glib/gio 指定 ipv6 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20909160/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com