51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5726|回复: 2
打印 上一主题 下一主题

[求助] 如何用TCL实现一个FTP客户端?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-10-26 18:13:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我可以建立一个21端口的连接,但20端口就不会搞了。请高手帮助!先谢过了!

#################Creat Socket proc
proc Socket_client { host port timeout} {
        global connected
        after $timeout {set connected timeout}
        set sock [socket -async $host $port]
        fileevent $sock w {set connected ok}
        vwait connected
        if { $connected == "timeout" } {
                return -code error timeout
        } else {
                return $sock
        }
}

###############Login
proc Login {Lsock21 Username Pass} {
        puts $Lsock21 "USER $Username"
        puts [gets $Lsock21]
        puts $Lsock21 "PASS $Pass"
        set loginSucc [gets $Lsock21]
        if {$loginSucc == {230 User logged in}} {
                return 1
        } else {
                return 0
                }
}

#############server accept
proc Accept {newSock addr port} {
        puts "Accepted $newSock from $addr port $port"
}

proc Socket20_Client {listenport} {
        set listensocket [socket -server Accept $listenport]
        vwait listensocket
        ruten $listensocket
}
#############Main Proc
#############FTP port 21 connection
set sock21 [Socket_client {10.21.4.106} {21} {30000}]

fconfigure $sock21 -buffering line

puts [gets $sock21]
set Login21 [Login "$sock21" {anonymous} {a@b.com}]

set socketMsg [fconfigure $sock21 -sockname]
set localport [lindex $socketMsg 2]
set portHi [ expr round( ($localport + 2) / 256)]
set portLo [ expr round( fmod($localport, 256))]

puts $sock21 "port 10, 21, 4, 16, $portHi, $portLo"
puts $sock21 {NLST}
#set socket20 [Socket20_Client [expr $localport + 2]]
puts $sock21 {}

after 1000 {
#puts [gets $socket]
#set sock2102 [read -nonewline $sock21]
#puts $sock2102
#set sock1 [socket -async 10.21.4.106 20]
#puts [fconfigure $sock1]
#close $sock21
#close $sock1
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2008-10-14 17:04:35 | 只看该作者
你是用Socket来做???好很不简单啊。。

你可以用Expert来做。。那个比较简单。。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2011-8-15 18:44:16 | 只看该作者
请教:
c写个unix socket ,如何用tcl加载 C语言写的扩展包?
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-26 01:55 , Processed in 0.069878 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表