2012-02-12 2 views
1

저는 C 프로그램에 상당히 익숙하며, 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

소켓을 연결하는 것을 잊었습니다. Do

g_socket_connect(udpSocket, udpSocketAddress, NULL, NULL); 

g_socket_send으로 전화하기 전에. 코드에 오류 검사를 추가 할 수도 있습니다.

+0

고맙다. 나는 아직도 소켓을 UDP에 연결해야한다는 것을 알지 못했다. – DrRocket

관련 문제