客服端
循环发送一组数据(一个文件) 3.2M 每次发送20K
在没有将数据发送完的情况下,得到了下面的错误。“一个封锁操作被对 WSACancelBlockingCall 的调用中断。”请问这是什么原因造成的。在局域网中则没有这个错误,成功发送!一旦放到网上就会出现这个错误。2边的操作系统都是windowsXP,1M adsl

解决方案 »

  1.   

    再描述清楚点,每次发送20K是什么意思?一个IP包发不了那么多,你是用的短连接还是长连接?
      

  2.   

    用的阻塞模式一条单独线程recv
    dat[10240];
    re=recv(m_Sock,dat,10240,0);
    if (re==SOCKET_ERROR)
    {
    }每次发送20K的意思是,每次从文件中读取20K的数据 再发送char *dat;
    dat=new char[20480];
    len=F.Read(dat,20480);
    if (len>0) send(m_Sock,dat,len,0);在局域网中没有问题,但一放到网上,就出现问题了,发送到一大半时recv返回“一个封锁操作被对 WSACancelBlockingCall 的调用中断。”的错误。
      

  3.   

    应该不关大小的事吧!我又测试了一下;发送一个1.3G的文件没次发送400个字节
    在302M的时候出错。 开始发送时间到出错时间 用了 1分51秒每次发送20480个字节
    在780M时出错。开始发送时间到出错时间 用了 1分44秒每次发送1024000个字节
    在745M时出错。开始发送时间到出错时间 用了 1分53秒每次发送102400个字节
    在1150M时出错。开始发送时间到出错时间 用了 1分41秒每次发送204800个字节
    没有出错。开始发送时间到发送完成时间 用了 1分23秒
    所以应该不是发送大小的问题,应该和时间有关,到底是怎么一回事呢??