Проблемы с отправкой UDP с помощью gsocket - PullRequest
1 голос
/ 13 февраля 2012

Я довольно новичок в программировании на C и испытываю некоторые трудности, пытаясь сосредоточиться на использовании GSocket для отправки UDP-сообщений.

Приложение, над которым я работаю, очень простое.У меня есть поля GTK_ENTRY, где пользователь может ввести IP-адрес, порт и сообщение, и когда они нажимают кнопку, он должен отправить сообщение через UDP на указанный адрес и порт.

Пока это моя функция:

static void send_message()
{
    GInetAddress *udpAddress;
    GSocketAddress *udpSocketAddress;
    GSocket *udpSocket;

    udpAddress = g_inet_address_new_from_string(gtk_entry_get_text (GTK_ENTRY (ipField)));
    guint16 udpPort = atoi(gtk_entry_get_text (GTK_ENTRY (portField)));

    udpSocketAddress = g_inet_socket_address_new(udpAddress, udpPort);

    udpSocket = g_socket_new(G_SOCKET_FAMILY_IPV4, G_SOCKET_TYPE_DATAGRAM, 17, NULL);

    const gchar *myMessage = gtk_entry_get_text (GTK_ENTRY (mainShowCommandField));
    g_socket_send (udpSocket, myMessage, sizeof(myMessage), NULL, NULL);
}

Программа компилируется без ошибок, но когда я запускаю функцию, сообщение не отправляется.

I 'Я уверен, что мне не хватает чего-то глупого, но любая помощь будет принята с благодарностью !!

1 Ответ

1 голос
/ 13 февраля 2012

Вы забыли подключить сокет. У

g_socket_connect(udpSocket, udpSocketAddress, NULL, NULL);

Перед звонком g_socket_send. Вы также можете добавить проверку ошибок в свой код.

...