2015-06-23 77 views
-1
int udp_sock() { 
    //Create socket 
    sock = socket(AF_INET , SOCK_DGRAM , 0); 

    if (sock == -1) { 
     printf("Could not create socket\n"); 
    } 

    puts("Socket created.......\n"); 

    server1.sin_addr.s_addr = inet_addr("172.210.110.10"); 
    server1.sin_family = AF_INET; 
    server1.sin_port = htons(PORT); 

    //Connect to remote server 
    con= connect(sock , (struct sockaddr *)&server1 , sizeof(server1)); 

    if(con<0) { 
     perror("connect failed. Error\n"); 
     return con; 
    } 

    puts("Connected\n"); 

    return 0; 
} 

的數據包到達服務器提及可達,但錯誤「目的端口不可達」在Wireshark的出現。目的端口在我的UDP客戶端插座

  1. 如何在我的客戶端上分配UDP端口以接收特定端口上的數據?
  2. 如何分配兩個不同的端口 - 1024和1025接收數據?

任何建議將有所幫助。

+0

「的數據包到達服務器提及「 - 你確定嗎?你在代碼中的哪個位置發送數據包? – Prabhu

+0

是啊 - 像@Prabhu評論下面,connect()沒有爲UDP定義:( –

回答

1

需要有一臺等待另一端的服務器。測試的一個簡單方法是使用netcat。

nc -lu 8053 

或者設置一個爲udp測試而設計的實用程序,如echo服務器。這通常是內置到inetd或xinetd的服務器

如果你想攔截你將需要使用bind()的選擇()傳入UDP數據包/調查()/ epoll的()和recvfrom()

+2

一個不能偵聽數據報套接字。 – Prabhu