是否连续调用recieveFrom函数。
我试过循环使用此函数,结果输出都一模一样。
好象要清空UDP缓冲区吧。
谁做过Socket应该知道的啊!

解决方案 »

  1.   

    先建立连接,客户端做成一个exe,服务端做成一个exe
    然后客户端连续发消息,用csocket::send函数即可
    服务端接收消息,用csocket::receive 函数即可
    最好是客户端和服务端都使用重载csocket类的对象
    onreceive是接收函数响应消息,只要有东西传它就自动响应
    最好在网上下一个例子看以下把
      

  2.   

    多谢指教,
    onreceive对应什么事件呢?
      

  3.   

    多谢指教。
    Onreceive对应什么消息事件呢?
    例子在哪里?
      

  4.   

    客户端发东西,用send函数发消息的话,服务端就立即有反映
    比如
    CSocClient m_client;
    CSocServer m_server;
    当 m_client.send()执行时,服务端的 CSocSever::OnReceive函数就有响应
    你可以根据你要接收的数据结构进行接收
    void CSocConnect::OnReceive(int nErrorCode) 
    {
     Receive(&m_UserMsg,sizeof(UserMsg));
     CSocket::OnReceive(nErrorCode);
      

  5.   

    OnReceive当有信息来时会调用此函数,在这里调用Receive或ReceiveFrom最好。当然,要使这个函数被调用汉要做以下工作:
    1。在创建套接字时使用FD_READ,其实缺省是这样的。
    2。若用CAsyncSocket,此消息仅被发送一次,你在OnReceive结束时用重新申请此消息。AsyncSelect(FD_READ)
      

  6.   

    请问CSocClient是什么?
    我一般都用CSocket来定义socket变量。
      

  7.   

    谁有CSOCKET的例子,拿出来大家看看!我也在苦苦查找!!
      

  8.   

    我重载了自定义的CmySocket的OnReceive()
    但是不知如何把接收到的数据传到其他类中去,如Dialog或Doc.
      

  9.   

    请大家看看这两段代码。
    void CmySocket::OnReceive(int nErrorCode) 
    {
    // TODO: Add your specialized code here and/or call the base class
    char szRecv[200];
    int iRecv;

    iRecv=Receive(szRecv,200,0);

    m_pDlg->m_RecvData =szRecv;
    m_pDlg->m_iRecv =iRecv;
    m_pDlg->GetDlgItem(IDC_Recv)->SetWindowText(szRecv); 
    m_pDlg->UpdateData(FALSE); 
    MessageBox(NULL,szRecv,NULL,0);

    CSocket::OnReceive(nErrorCode);
    }void CSocketTestDlg::OnOK() 
    {
    // TODO: Add extra validation here

    BYTE ip1,ip2,ip3,ip4;
    CString IP_Address,Port;
    CmySocket  m_sockRecv; m_IPAddress.GetAddress(ip1,ip2,ip3,ip4);

    IP_Address.Format("%d.%d.%d.%d",ip1,ip2,ip3,ip4); //MessageBox(IP_Address,NULL,MB_OK);
    UpdateData(TRUE);
    Port.Format("%d",m_Port); m_sockRecv.m_pDlg =this;
    m_sockRecv.Create(m_Port,SOCK_DGRAM,IP_Address);
    m_sockRecv.Bind(m_Port,IP_Address);
    m_sockRecv.AsyncSelect(FD_READ); 

    // CDialog::OnOK();
    }
    执行后OnReceve()总不被触发,这是为什么?
      

  10.   

    你在CSocketTestDlg::OnOK() 中定义CmySocket  m_sockRecv,这个函数一调用,整个对话筐就退出,同时释放掉所有的局部变量,m_sockRecv也被放掉了,当然接收不到
      

  11.   

    to blueskyweave(枫枫) 为什么OnReceive不执行?
    我用的是CSocket的派生类。
      

  12.   

    在Socket端口读取内容后,如果设置为读完即清的状态,则不会重复读取