请问怎么指定套接字接收数据的IP(比如我只想接收来自10.1.72.96的数据),我将S_addr设为我的IP和INADDR_ANY 都可以,但我将S_addr设置为其它IP就不行,提示套接字绑定失败;如下,我将S_addr设为10.1.72.54就提示绑定失败;SOCKET m_socket=socket(AF_INET,SOCK_DGRAM ,0);
SOCKADDR_IN addrsock; 
addrsock.sin_family=AF_INET;
addrsock.sin_port=htons(6800;
addrsock.sin_addr.S_un.S_addr=inet_addr("10.1.72.54");

解决方案 »

  1.   

    10.1.72.54是你自己的IP吗?
    你的绑定自己的IP啊
      

  2.   

    如果你只想接收10.1.72.54的話你listen之後  accept函數可以傳入一個sockaddr_in結構  判斷這個結構中獲取的ip是否是10.1.72.54,不是的話直接closesocket  close的是accept返回的socket 不是listen的那個socket
      

  3.   

    我是想让一个端口绑定多个套接字,每个套接字只接收来自不同IP的数据,就像一个QQ可以开几个窗口和多个人聊天,却能分清楚哪个数据应该发送到哪个窗口一样。难道同一个QQ针对不同的聊天窗口,聊天数据接收端口也不一样吗,也就是套接字绑定到了不同的端口?
      

  4.   

    我是想让一个端口绑定多个套接字,每个套接字只接收来自不同IP的数据(怎么区分?不能通过套接字绑定实现吗?),就像一个QQ可以开几个窗口和多个人聊天,却能分清楚哪个数据应该发送到哪个窗口一样。难道同一个QQ针对不同的聊天窗口,聊天数据接收端口也不一样吗也就是套接字绑定到了不同的端口? ,还是QQ发送的数据中含有什么标志?
      

  5.   

    如果bind只能绑定本地IP,哪么S_addr还有必要设置吗?INADDR_ANY是说接收来自任务IP的数据,按理说应该可以设置接收的IP的吧?哎,好多疑问啊,哪位高手帮帮我啊