2012-02-12 13 views
1

私はかなりプログラミングが面倒で、GSocketを使ってUDPメッセージを送信するのにいくつかの困難を抱えています。gsocketでUDPを送信する際の問題

私が取り組んでいるアプリケーションは非常に簡単です。ユーザーがIPアドレス、ポート、およびメッセージを入力できるGTK_ENTRYフィールドがあり、ボタンをクリックすると、指定されたアドレスとポートに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

glibcはglibとは異なるものです。私はそのタグを削除しました。 – ptomato

答えて

1

ソケットを接続するのを忘れました。 g_socket_sendを呼び出す前に

g_socket_connect(udpSocket, udpSocketAddress, NULL, NULL); 

います。コードにエラーチェックを追加することもできます。

+0

ありがとう、私はまだUDPのソケットを接続しなければならなかったことを気付かなかった。 – DrRocket

関連する問題