无法接收udp广播的消息

时间:2017-01-05 12:05:41

标签: c udp

我写了一个简单的UDP广播示例。当我使用sockaddr_in将结构inet_addr("192.168.152.128")写入IP地址时,我无法通过广播192.168.152.255从另一个UDP广播节目接收该消息。但是当我写htonl(INADDR_ANY)时,它可以收到消息。为什么会这样?

这段代码:

#include"myhead.h"
char rbuf[50];
char wbuf[50];
int main()
{
  int udp, size, len, opt = 1;
  struct sockaddr_in laddr;
  struct sockaddr_in raddr;

  laddr.sin_family = AF_INET;
  laddr.sin_port = htons(8888);
  laddr.sin_addr.s_addr = htonl(INADDR_ANY);

  //when i write inet_addr("192.168.152.128")
  //it cannot receive the message.

  size = sizeof(struct sockaddr_in);
  udp = socket(AF_INET, SOCK_DGRAM, 0);
  setsockopt(udp, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof opt);
  bind(udp, (struct sockaddr*)&laddr, size);

  len = sizeof(struct sockaddr);
  while (1)
  {
    recvfrom(udp, rbuf, 50, 0, (struct sockaddr*)&raddr, &len);
    printf("%s\n", rbuf);
    bzero(rbuf, 50);
  }
}

0 个答案:

没有答案