2013-05-14 69 views
0

我尝试使用UDP套接字来发送数据,并捕获使用Wireshark的(Windows7的下)的数据:奇怪UDP套接字SENDTO行为

client_sockd= socket(AF_INET,SOCK_DGRAM,IPPROTO_IP);  
client_address.sin_family = AF_INET; 
client_address.sin_addr.s_addr = inet_addr("192.168.3.100"); 
client_address.sin_port=htons(8015); 
client_len=sizeof(client_address); 
int sended = sendto(client_sockd,buf,11,0,(const struct sockaddr *)&client_address,sizeof(client_address)); 

它发送数据包到正确的IP,但目的端口成为2698.我试图改变我的代码中的端口,但它对真正的目标端口没有任何影响。它仍然是2698. 我该如何解决它?

回答

0

尝试IPPROTO_UDP而不是IPPROTO_IP

client_sockd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);  
+0

谢谢回答。我已经尝试过两种变体,没有任何积极的结果 – qmor 2013-05-14 15:19:44

+0

你确定你的程序正在重新编译后,你改变了一些东西?你看到的很奇怪。你的开发环境是什么? – 2013-05-14 15:21:56

+0

我的开发环境和mingw一样是eclipse。在对代码进行任何更改之后,我做了一次清理并重建,以确保最新的最新版本。 – qmor 2013-05-14 15:29:06