使用gsocket发送UDP的问题

时间:2012-02-12 20:11:39

标签: glib

我对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);
}

程序编译时没有错误,但是当我触发该函数时,消息没有被发送。

我确定我错过了一些愚蠢的东西,但任何帮助都会非常感激!!

1 个答案:

答案 0 :(得分:1)

您忘记连接套接字。做

g_socket_connect(udpSocket, udpSocketAddress, NULL, NULL);

在致电g_socket_send之前。您还可能希望在代码中添加错误检查。