在头文件里有#define TALK_REC_PORT 10001,
在使用SendTo (m_pFrame, nBufLen + sizeof(struct Frame),
TALK_REC_PORT,m_ip[tem], nFlags);时,TALK_REC_PORT没有问题,但是在使用ReceiveFrom (m_pFrame,m_iLen*3,m_ip2[m_num1],TALK_REC_PORT,nFlags);时就提示如上的错误,怎么办啊?

解决方案 »

  1.   

    unsigned int port = TALK_REC_PORT
    ReceiveFrom   (m_pFrame,m_iLen*3,m_ip2[m_num1],port ,nFlags);
      

  2.   

    楼上正解.你的TALK_REC_PORT是个常量啊.不允许做为引用来使用的.
      

  3.   

    那为什么在SendTo   (m_pFrame,   nBufLen   +   sizeof(struct   Frame), 
    TALK_REC_PORT,m_ip[tem],   nFlags);时,没有错误呢??
      

  4.   

    还有一个问题要问:
    我把ReceiveFrom (m_pFrame,m_iLen*3,m_ip2[m_num1],TALK_REC_PORT,nFlags);函数加在了
    void CRecSocket::OnReceive(int nErrorCode)这个消息响应函数里
    [  目的就是为了能过接受m_ip2[m_num1]里存储的不同的IP地址 ,来的声音 ]
    请问这样做可以吗?
      

  5.   

    unsigned int &明明告诉你是一个引用,你SendTo的那个参数不是引用,当然就可以了啊.变量,常量,参数的类型,麻烦先学一下基本的东西.至少这样的错误是很明显的,应该可以看得出啊.不知道你有没有重载OnAccept(),应该是放在这里面的.
      

  6.   

    请看函数的定义:int ReceiveFrom(void* lpBuf,int nBufLen,CString& rSocketAddress,UINT& rSocketPort,int nFlags = 0 );而你的ReceiveFrom   (m_pFrame,m_iLen*3,m_ip2[m_num1],TALK_REC_PORT,nFlags);
    实际上是ReceiveFrom   (m_pFrame,m_iLen*3,m_ip2[m_num1],10001,nFlags);显然不能将 10001 转换为 UINT &