本帖最后由 VisualEleven 于 2012-10-22 07:51:30 编辑

解决方案 »

  1.   

    可用异步接收模式:
    1) 打开 Socket,
       m_stk=socket(.....);
    2) 登记回调消息
       WSAAsyncSelect(m_skt,hWnd,WM_USER+2,FD_READ | FD_WRITE);
    3) 用 ON_MESSAGE 对 WM_USER+2 映射消息
    4) 在各自的消息处理函数里发送和接收
      

  2.   

    我的socket使用CAsyncSocket 的create函数创建的,那怎么登记回调消息呢?
      

  3.   

    自己定义一个类,它从 CAsyncSocket 导出,并重载 OnReceive(..) 函数.
      

  4.   

    你上面的代码是放在主线程函数中操作的?Sleep最好不要放到主线程中,否则会出现卡的问题,放到工作线程中去做吧。另外不建议使用CSocket类,还是使用winsock API函数吧~
      

  5.   

    不建议使用CSocket类,还是使用winsock API函数吧~
    工作者线程。
      

  6.   

    初学者最好用API来做,不然的话问题出哪里都不知道。一般接收都是另开一个线程的。界面线程只负责显示。
    Sleep(500)太夸张了。最多也就Sleep(1),不过还是建议放到自己建立的接收线程中去
      

  7.   

    Sleep(1)速度太快了但是数据接收不到,估计是另一端的问题,估计好的解决办法是接收另开一个线程,界面线程负责显示。