我用的是CSocket,实现了,也不太稳定,但在局域网上基本没为题,开始我也是发方循环发送,我认为这样不行,应该在收方收到一个块后,向发方要下一个块,你如果感兴趣,我把代码发给你,winsock我不太熟,据说比CSocket好,我为了赶活,用了CSocket,能不能交流一下?我的email是:[email protected](注意:最后一个字母是“零”而非“噢”)。

解决方案 »

  1.   

    我用CAsyncSocket做了一个监视对方屏幕的函数,在局域网中根本不用分块,直接将200K左右的BMP数据发送到服务器端,并且一次接收成功,没有问题,真是爽!
      

  2.   

    可以试一试每块发1K,每发送完一块后,Sleep(500).
      

  3.   

    我做过用UDP传送的。给我发一份代码。[email protected]
      

  4.   

    我用的是vb的winsock控件,发送自定义结构
    用到了api,CopyMemory()函数。
    是不是vb太恶心了!
      

  5.   

    接受和发送的大小不存在直接的关系。
    网络很忙时,send(buf,100);在recv(buf)时可能=40。
    网络很空时,client端send(buf,100);send(buf,100);两次,
    recv(buf)=200一次就接受完也是有可能的。所以,不能以为send两次
    就一定可以recv两次。recv多次也是有可能的。而且,每次的数据不一定
    等于发送的数据。所以,千万不要这样:
    recv(buf);
    if(buf=="end")
      closesocket(s);
    这样就会一不小心cut socket,或者永远cut不了。