char Msg[20];
CString szIP("127.0.0.1");
UINT uPort=5123; p_mySock = new mySocket(this);
p_mySock->Create(6123,SOCK_DGRAM,"127.0.0.1");
AfxMessageBox("OK");
int iRecv = p_mySock->ReceiveFrom(Msg,10,szIP,uPort,0);
TRACE("received %d byte\n",iRecv);
if (iRecv)
{
AfxMessageBox("recv OK");
}
p_mySock->Close();代码在上面,我的send发送成功了的,用TRACE能看到发送了10 bytes,
我觉得代码没问题,这是时间驱动接收包,不存在阻塞吧?
怎么接收时程序就不动了,好像整个WINDOWS也死了,只有用结束任务解决高手们指点小弟啊~~~~~

解决方案 »

  1.   

    缓冲区内没有数据就会造成阻塞,直到有数据到才返回,一般是用SELECT来判断是否有数据,如果有就调用接收数据!!
      

  2.   

    可是,我的send发送成功了的啊,还会阻塞?我用的是
    OnReceive(int nErrorCode)事件啊? 我用CSocket 究竟该怎么解决这问题呢,100分送上! 感谢
      

  3.   

    你调用ReceiveFrom的时候socket中可能没有数据,
    建议你不要直接使用CSocket类, 而是从Csocket派生一个类, 然后重载
    Csocket类的OnReceive方法。当Socket接收到数据的时候,系统自动调用
    OnReceive方法