我在写一个ftp服务端,使用FlashFXP作为客户端进行测试。
下面是服务端的信息显示:
*****************************************
  开始服务。
  有用户连接,发送:220 FTP Server Ready!
  收到:USER 111
  发送 331 User name okay, need password.
  收到:PASS 222
  发送 230 User logged in, proceed..
  收到:SYST
  发送 502 WindowsXP Type: L8
  收到:REST 100
  发送 202 Command not implemented, superfluous at this site.
  收到:PWD
  发送 257 C:\ is current directory.
  收到:TYPE A
  发送 200 Type set to A.
  收到:PASV
  发送 550 Passive mode not allowed on this server.
  收到:PORT 192,168,12,108,19,71
  发送 200 Port command successful.
  收到:LIST
  发送:125
****************************************
客户端信息显示:
WinSock 2.0
正在连接到 主机1
正在连接到 主机1 -> IP=192.168.12.108 端口=21
220 FTP Server Ready!
USER 111
331 User name okay, need password.
PASS (隐藏)
230 User logged in, proceed.
SYST
502 WindowsXP Type: L8
REST 100
202 Command not implemented, superfluous at this site.
这个站点可能不允许文件续传
PWD
257 C:\ is current directory.
TYPE A
200 Type set to A.
PASV
550 Passive mode not allowed on this server.
PORT 192,168,12,108,19,71
200 Port command successful.
LIST
******************************************************我的服务端在21端口接受到pasv命令后返回给他550,告诉客户端不支持pasv模式,要求使用port模式,所以客户端又发送port命令给我。命令是“PORT 192,168,12,108,19,71”,参数中应该包含着客户端为数据链路准备好的端口,我应通过20端口和它建立数据链路,但后面的“19,71”哪个是端口号?另一个数字是什么意思?
我不知道怎样解释客户端送来的port命令,就什么也没做,给他返回200,告诉他port命令成功执行,他发来list命令,我从21端口送出list的结果,可它得不到。停在list命令中,一会儿就超时断开了。
我在论坛里搜索了ftp相关的帖子,没有对port命令参数的解释。请高手们指点一下。

解决方案 »

  1.   

    自己在网上搜到了,“PORT 192,168,12,108,19,71”,端口号是19*256+71=4935,
      

  2.   

    端口问题自己解决了,又有新问题了。
    客户端给我发来了“PORT 192,168,12,108,19,71”命令,告诉我他在监听4935这个端口。
    我要根据它的ip和端口和它建立连接。
    我这样写:
    TcpClient client = new TcpClient(server, port);//server是ip,string型;port是端口号int32型
    但运行时报“由于目标机器积极拒绝,无法连接”。是不是FlashFXP要求我必许从20端口和它去连接呢?我该怎样用20去连它?TcpClient类好像不能设定自己这边的端口啊???
    请帮帮我~~~~
      

  3.   

    4935是运行FlashFXP的那台电脑随机选的,FlashFXP这么成熟的软件一定不会选被关掉或被占用的端口。在port模式下应该是我通过20端口去和他建立连接。难道我该用TcpListener来监听吗?