用send,recv函数写ftp,小于2K的文件都能够正常传输,但是文件大于2k的话,send和recv会出现错误,我查了下,它返回的错误说服务器端的socket连接断开了,我不知道这是什么原因?求解释

解决方案 »

  1.   

    没有啊,就是通过得到文件的大小,然后除以buffer的长度,循环的send,recv。不知道为什么大文件循环的发送了200次左右,socket就突然中断了。
    PS:协议都是自己定义的,没有与标准的ftp互通
      

  2.   

    需要多次send你的数据,和多次recv
      

  3.   

    我感觉应该不是客户端的问题, 去检查一下服务端。
    (1)服务端每次收到以后,都写入文件吗?如果不是, 看看buffer是不是足够大?
    (2)服务端并不是每次都能准时收到客户端的数据, 如果收不到, 应该继续收(有时间限制吗)。
      

  4.   

    我的代码的构思是这样的:
    首先服务器读取1024个字节发送过去,客户端接受(recv);然后客户端发送“GET”,通知服务端已经接受到数据,而后服务器再次读取和发送,如此循环,直至发送完毕。
    不知道有问题吗?
      

  5.   

    我按照上面的想法做,前2K的数据都能正常发送,可是为什么到了后面socket会突然被关闭掉,实在想不明白。