UDP开发的Server和Client,奇怪的是他们都可以收到自己发出的消息,但是对他们之间的消息视而不见(或者根本没有这样的消息)。我用抓包的工具都没法抓到两端发出的消息。不知道怎么回事

解决方案 »

  1.   

    没抓到过发送的UDP包
    不过在我的Server和Client端都是用RecvFrom()来接收消息的,并且可以接收到自己发出的消息
      

  2.   

    呵呵 IP对不对啊~  哈哈~~-----------------------------------------------------------------------------------------------------------------------------------------
    CSDN小猪手:方便查看,快速回复~~速度++~~~
    下载:
    http://www.vickyjam.com/blog/lbs/article.asp?id=165
      

  3.   

    to  Helppppppppppppppper(CSDN 小猪的手~http://www.vickyjam.com~~) :
     什么IP?我的程序设这样写的:
    bool CInfoMana::setAddr(int port)
    {

    // 获取本机名
    hostent* remoteHost;
    char LocalName[256];
    int error;
    error=gethostname(LocalName, 256); // 获取本地 IP 地址
    remoteHost = gethostbyname(LocalName);
    hostent& he = *remoteHost;
        
    sockaddr_in sa;
    CString strIpAddress;
    for (int nAdapter=0; he.h_addr_list[nAdapter]; nAdapter++) 
    {
    memcpy ( &sa.sin_addr.s_addr, he.h_addr_list[nAdapter],he.h_length); }
    // 输出机器的IP地址.
       char* pIP=inet_ntoa(sa.sin_addr); 
       CString s;
       s.Format("%s",pIP);
       strIpAddress=s;
       LocalAddr.sin_addr.s_addr=inet_addr(strIpAddress);
       LocalAddr.sin_family=AF_INET;
       LocalAddr.sin_port=htons(port);
       return true;
    }
    bool CInfoMana::setDAddr(CString addr,int port)
    {
    DesAddr.sin_addr.s_addr= inet_addr(addr);
    DesAddr.sin_family=AF_INET;
    DesAddr.sin_port=htons(port);
        return true;
    }
    .......
    BOOL CServerApp::InitInstance()
    {
    ...........
    infomanager.setAddr(5000);
    infomanager.setDAddr("10.142.50.189",5000);//我的计算机ip
    infomanager.startup();
    ......
    }
    这样我的程序就可以接收到它自己发出的信息,如果把setDAddr的第二个参数改成5001(就是我的Server在本机进行测试的端口),进行Server和Client之间的通讯就无法收到对方的信息,Server和Client的通信类是一样的,只不过端口不一样。
      

  4.   

    郁闷,果然是ip设置错了,T_T,问题已经解决了