ftp客户端:如何在空闲时候维持网络连接?

zhaiyl 2003-08-15 05:36:45
我做的是阻塞式的,用CSocket,单线程
我看到CuteFtp里面自动的发送ftp命令,有一定的规律,又不是很规则
不知道如何在我的基础上能完成同样的功能?
还有,我怎么才能知道连接已经中断?
请大家帮忙!!
...全文
128 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaiyl 2003-08-16
  • 打赏
  • 举报
回复
to: johnbill(菜鸟一个)
多谢你的帮助,我试试,可不可以给我一个你做的例子看看阿?: )
我试第一次作,觉得我编的比较乱,主要是我的思路比较乱。
想研究一下,等以后重新做一个好点的
johnbill 2003-08-15
  • 打赏
  • 举报
回复
可以设置一个Timer,每当收到WM_TIMER消息时:
  先调用CSocket的IsBlocking函数判断当前是否阻塞,如果正阻塞,说明有操作正在执行,就不用发命令了,如果没阻塞,再向服务端发送NOOP命令(或PWD命令,或其他简短的命令)。

  至于如果判断对方已关闭,对于阻塞方式,在每一次发送或接收的时候,如果连接已经关闭,Send和Receive会报错,用CSocket的GetLastError()会得到WSAENOTCONN之类的错误。

PS:如果你要升级到多线程,不要用CSocket,因为CSocket是不可以跨线程使用的。我是用标准的socket来写的。
copy_paste 2003-08-15
  • 打赏
  • 举报
回复
如果你用非阻塞的Socket,你就用SetTimer,进行间隔处理
如果是用阻塞的,一般是在线程里处理吧。你应该有WaitFor处理吧,当WaitFor Timeout时,就处理一下。

处理再细分间隔时间,如一个: m_dwLastCommandTime, 处理时,看看CurrTime - m_dwLastCommandTime是不是> 设置的间隔时间,如是,则pwd, type i的之类的命令过去就完了。
Crob 2003-08-15
  • 打赏
  • 举报
回复
FTP有专门的NOOP指令的啊!

直接向FTP服务器Send一个NOOP就可以了
zhaiyl 2003-08-15
  • 打赏
  • 举报
回复
如何实现这个时间间隔阿,是用OnTimer吗?
我不太清楚他的用法,有没有人帮我解释一下阿,先谢了
fantiyu 2003-08-15
  • 打赏
  • 举报
回复
每过一段时间发送TYPE I
天限天空 2003-08-15
  • 打赏
  • 举报
回复
up

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧