我对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);
}
程序编译时没有错误,但是当我触发该函数时,消息没有被发送。
我确定我错过了一些愚蠢的东西,但任何帮助都会非常感激!!
答案 0 :(得分:1)
您忘记连接套接字。做
g_socket_connect(udpSocket, udpSocketAddress, NULL, NULL);
在致电g_socket_send
之前。您还可能希望在代码中添加错误检查。