亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

您好,為什么recvfrom函數得到的IP地址不對?

您好,為什么recvfrom函數得到的IP地址不對?

阿晨1998 2021-11-03 11:07:56
#define SERVER_PORT_NUM 5002#define REQUEST_MSG_SIZE 1024struct request{int display;char message[REQUEST_MSG_SIZE];};#include "vxworks.h"#include "sockLib.h"#include "inetLib.h"#include "stdioLib.h"#include "strLib.h"#include "hostLib.h"#include "ioLib.h"STATUS udpServer(){struct sockaddr_in serverAddr;struct sockaddr_in clientAddr;struct request clientRequest;int sockAddrSize_s;int sockAddrSize_c;int sFd;char inetAddr[1024];sockAddrSize_s=sizeof(struct sockaddr_in);sockAddrSize_c=sizeof(struct sockaddr_in);printf("size =%d\n",sockAddrSize_c);bzero((char*)&serverAddr,sockAddrSize_s);/*serverAddr.sin_len=(u_char)sockAddrSize_s;*/serverAddr.sin_family=AF_INET;serverAddr.sin_port=htons(SERVER_PORT_NUM);serverAddr.sin_addr.s_addr=inet_addr("0.0.0.0");  if((sFd=socket(AF_INET,SOCK_DGRAM,0))==ERROR){perror("error in create server socket!\n");return(ERROR);}bind(sFd,(struct sockaddr*)&serverAddr,sockAddrSize_s);printf("waitting...\n");for(;;){recvfrom(sFd,(char*)&clientRequest,sizeof(clientRequest),0,(struct sockaddr*)&clientAddr,&sockAddrSize_c);if(clientRequest.display){inet_ntoa_b(clientAddr.sin_addr,inetAddr);printf("MSG FROM CLIENT (internet address %s ,port %d):\n%s\n",inet_ntoa(clientAddr.sin_addr),ntohs(clientAddr.sin_port),clientRequest.message);}}}服務器是在目標機上運行的,目標機的IP是:169.254.43.254,主機(客戶端)是:169.254.43.215,但是通過recvfrom得到的IP地址卻是169.254.43.254,而不是169.254.43.215???請教大家了,忙了一下午都沒解決這個問題。謝謝了!??!
查看完整描述

2 回答

?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

while(1)
{
recvfrom(sockfd, readbuff, UDP_CMD_BUFF_LENGTH - 1, 0, (struct sockaddr *)&Glob_remot_88_port_add, &len);
PRINT("[recevudp]len %d IP is %s\n", len, inet_ntoa(Glob_remot_88_port_add.sin_addr));
}
這個函數, 第一次接受打印出的發送方IP地址總是0.0.0.0;
解決方法:
在recvfrom之前加一句: len = sizeof(struct sockaddr);
即可

查看完整回答
反對 回復 2021-11-07
?
慕森王

TA貢獻1777條經驗 獲得超3個贊

169.254.x.x的地址是沒設定IP地址時,機器產生的偽地址。
給網卡真正設個地址再看看

查看完整回答
反對 回復 2021-11-07
  • 2 回答
  • 0 關注
  • 536 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號