
udp的recvfrom函数,能接收指定ip和端口发送来的数据吗?
想写一段程序设置成,本机192.168.41.111的端口10000只接收192.168.41.110,端口号为60200发送来的数据。其他ip地址发送到本机ip,100...
想写一段程序设置成,本机192.168.41.111的端口10000只接收192.168.41.110,端口号为60200发送来的数据。其他ip地址发送到本机ip,10000端口的数据不接收。部分配置如下:
int s;
struct sockaddr_in addr_GK,addr_SMP;
s = socket(AF_INET, SOCK_DGRAM, 0);
memset(&addr_GK, 0, sizeof(addr_GK));
memset(&addr_SMP, 0, sizeof(addr_SMP));
addr_GK.sin_family = AF_INET;
addr_SMP.sin_family = AF_INET;
addr_GK.sin_addr.s_addr = inet_addr("192.168.41.110");//客户端地址
addr_SMP.sin_addr.s_addr = inet_addr("192.168.41.111");//本机地址
addr_GK.sin_port = htons(60200);//客户端端口
addr_SMP.sin_port = htons(10000);//本机端口
bind(s, (struct sockaddr*)&addr_SMP, sizeof(addr_SMP));
len = sizeof(struct sockaddr);
n = recvfrom(s, buff, BUFF_LEN, 0, (struct sockaddr*)&addr_GK, &len);
程序能正常运行,但是为什么本机10000端口能接收到192.168.41.25的数据? 展开
int s;
struct sockaddr_in addr_GK,addr_SMP;
s = socket(AF_INET, SOCK_DGRAM, 0);
memset(&addr_GK, 0, sizeof(addr_GK));
memset(&addr_SMP, 0, sizeof(addr_SMP));
addr_GK.sin_family = AF_INET;
addr_SMP.sin_family = AF_INET;
addr_GK.sin_addr.s_addr = inet_addr("192.168.41.110");//客户端地址
addr_SMP.sin_addr.s_addr = inet_addr("192.168.41.111");//本机地址
addr_GK.sin_port = htons(60200);//客户端端口
addr_SMP.sin_port = htons(10000);//本机端口
bind(s, (struct sockaddr*)&addr_SMP, sizeof(addr_SMP));
len = sizeof(struct sockaddr);
n = recvfrom(s, buff, BUFF_LEN, 0, (struct sockaddr*)&addr_GK, &len);
程序能正常运行,但是为什么本机10000端口能接收到192.168.41.25的数据? 展开
2个回答
展开全部
不能,他的参数是用来存储发送数据的socket的。
可以在接收到数据以后进行判断,如果是需要的IP则采用数据,否则丢弃数据。
可以在接收到数据以后进行判断,如果是需要的IP则采用数据,否则丢弃数据。

2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询