| 发表于:2007-07-26 15:36:5811楼 得分:10 |
在内网出问题,一般都是因为外网无法连接访问内网正在侦听的机器引起的。 写网络软件常见这种情况,服务端在外网,客户端放在内网与外网都没问题,但如把服务端放在内网机器上,外网客户端是无法连接进来的。 访问ftp服务器,看似服务器在外网,其实不然,ftp连接建立是有两个通道的,正常服务器侦听21端口,等待连接,这种建立的只是命令通道,若传输数据还需另外建立一个连接,这个连接默认采用port模式建立。 使用port模式,那么客户端会发送一条命令告诉服务端:客户端已在本地打开了一个端口在等着你进行数据连接,当服务端收到这个port命令后 就会向客户端打开的那个端口进行连接,可见ftp传输时,客户端也需侦听等待连接。这在内网是行不通的。 当然,ftp服务器与上传软件都支持,另一种pasv模式,它需向服务端发送一个pasv命令,服务端就用回应一个端口信息,并侦听,等待客户端连接数据通道。事实上,现在通用的ftp软件默认都是使用pasv模式,因为在内网使用ftp软件的人是占大多数的。 我想你的问题就出在数据通道的连接模式上,这种问题,winsock做的ftp上传程序可以简单地通过ftp命令修改。至于,api函数的ftp函数怎么实现pasv模式,我不太清楚,你自己在网上搜一下吧。 | | |
|