srv.sin_family = AF_INET;
srv.sin_addr.s_addr = htonl( INADDR_ANY ); // 任何地址
srv.sin_port = htons( PortNum );
我的程序里面好像srv.sin_addr.s_addr = htonl( INADDR_ANY );是接收任意IP的数据,我想问下,我的能不能改成只是接收固定IP的数据包呢,如何修改,谢谢,能给代码嘛

解决方案 »

  1.   

    SockAddr.sin_addr.S_un.S_addr = inet_addr(Ip);
      

  2.   

    srv.sin_family = AF_INET; 
    srv.sin_addr.S_un.S_addr = inet_addr(Ip);
    srv.sin_port = htons( PortNum ); 
      

  3.   

    可以啊,设置srv.sin_addr.s_addr即可
      

  4.   

    srv.sin_addr.s_addr = htonl( INADDR_ANY ); // 任何地址
    表示的绑定的本地所有的端口吧,控制的是本地的发送源端吧,我记得好像是这样的.如果你想知接收指定的IP的话,你可以接收所有的,然后判断接收的IP,除了指定IP的,其他丢弃了就可以了.
    当然你也可以设置路由器或者防火墙,只允许指定IP数据通过.
      

  5.   

    这里解释了INADDR_ANY的含义http://baike.baidu.com/view/1512659.htm