首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > VxWorks >

vxworks下,在程序中修改ftp的recv_buf大小为1024后,下载的文件下了8k多,为什么?该怎么解决

2012-02-09 
vxworks下,在程序中修改ftp的recv_buf大小为1024后,下载的文件下了8k多,为什么?自己写的ftp客户端,将data

vxworks下,在程序中修改ftp的recv_buf大小为1024后,下载的文件下了8k多,为什么?
自己写的ftp客户端,将data连接的recv_buf大小设置为1024,然后以vxworks自带的ftp servier为server,进行文件下载,结果发现可以下载成功,但下载的文件少了8k左右个字节。将recv_buf大小设置为2048也同样会少,设置成4096和8192就没有问题,为什么?是不是server端的窗口是8192,在server端数据发送完成后会主动断开data连接,而此时缓冲区的数据还没有传完,就data连接close了,导致下载少了几k?怎么解决呢?

[解决办法]
因为socket数据没有读完就被关闭了,必须设置socket选项:
struct linger so_linger = {1, 0};
setsockopt (fd, SOL_SOCKET, SO_LINGER, (void *)&so_linger, sizeof (so_linger));
注意:ftp的控制socket和数据socket都需要设置这个选项。

热点排行