Я пытаюсь использовать библиотеку Gnome glib/gio C для создания клиентской программы для подключения к серверу через IPv6. В поле моего сервера есть ссылка на локальный IPv6-адрес:
inet6 addr: fe80::2d0:c9ff:feda:99e0/64 Scope:Link
Итак, чтобы получить к нему доступ, я должен указать клиентскому программному обеспечению, какой интерфейс использовать (в данном случае 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'
Итак, кто-нибудь знает, как указать интерфейс?
РЕДАКТИРОВАТЬ: вот код
// 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;
}
none://
явно не прав. Вам может понадобиться показать код здесь. - person Michael Hampton   schedule 04.01.2014$ ./a.out Connection successful!
Имейте в виду, что это один из моих IP-адресов... - person Michael Hampton   schedule 07.01.2014