UDP通信怎样识别对方的IP?解决办法
UDP通信怎样识别对方的IP?
UDP通信,A机向B机发送数据(两者都连到同一个路由器下),怎样让B从接收的数据包中提取A的IP和Port?我提取的数据竟然是错误的。我从请高手给个例子学习一下,谢谢。
------解决方案--------------------
发送的时候包括自己的IP发出去,然后接收端提取一下就是了。
------解决方案--------------------
SOCKADDR_IN addr_sin;
int len=sizeof(SOCKADDR);
recvfrom(socket_server,recv_buf,200,0,(SOCKADDR *)&addr_sin,&len);
sprintf(temp,"%s说 :%s",inet_ntoa(addr_sin.sin_addr),recv_buf);
printf("%s\n",temp);
//sendto(socket_server,"Welcome TO Here !",strlen("Welcome TO Here !")+1,0,(SOCKADDR *)&addr_sin,len);
printf("我说 :");
gets(send_buf);
sendto(socket_server,send_buf,strlen(send_buf)+1,0,(SOCKADDR *)&addr_sin,len);
红色部分就得到了对方IP信息
------解决方案--------------------
在发送的时候若是广播的话是不会有对方IP地址的,一般用sand进行发送,若是定点发送的话是可以将对方IP地址确定的
如7楼中的
sendto(socket_server,send_buf,strlen(send_buf)+1,0,(SOCKADDR *)&addr_sin,len);
红色的SOCKADDR就包含接收方的IP
UDP通信,A机向B机发送数据(两者都连到同一个路由器下),怎样让B从接收的数据包中提取A的IP和Port?我提取的数据竟然是错误的。我从请高手给个例子学习一下,谢谢。
------解决方案--------------------
发送的时候包括自己的IP发出去,然后接收端提取一下就是了。
------解决方案--------------------
SOCKADDR_IN addr_sin;
int len=sizeof(SOCKADDR);
recvfrom(socket_server,recv_buf,200,0,(SOCKADDR *)&addr_sin,&len);
sprintf(temp,"%s说 :%s",inet_ntoa(addr_sin.sin_addr),recv_buf);
printf("%s\n",temp);
//sendto(socket_server,"Welcome TO Here !",strlen("Welcome TO Here !")+1,0,(SOCKADDR *)&addr_sin,len);
printf("我说 :");
gets(send_buf);
sendto(socket_server,send_buf,strlen(send_buf)+1,0,(SOCKADDR *)&addr_sin,len);
红色部分就得到了对方IP信息
------解决方案--------------------
在发送的时候若是广播的话是不会有对方IP地址的,一般用sand进行发送,若是定点发送的话是可以将对方IP地址确定的
如7楼中的
sendto(socket_server,send_buf,strlen(send_buf)+1,0,(SOCKADDR *)&addr_sin,len);
红色的SOCKADDR就包含接收方的IP