アクティブモード(PORTモード)のソースがありましたら教えていただけませんか?
<参考URL>
http://support.microsoft.com/kb/832679/ja
以下はTcpClientを使用したC#のソースです。VBに変換して試してみてください。
//Portコマンドパラメータ作成 // ip - IPアドレス // port - port番号 private string PortParam(IPAddress ip, int port) { string addr = ip.ToString().Replace('.', ','); int p1 = port / 256; int p2 = port % 256; return addr + "," + p1.ToString() + "," + p2.ToString(); } //アクティブモード接続 // cmd - コマンド private TcpClient getActvConnection(string cmd) { IPHostEntry localhost = Dns.GetHostEntry(Dns.GetHostName()); IPAddress ipaddress = localhost.AddressList[0]; TcpListener listener = new TcpListener(ipaddress, 50001); TcpClient client; ExecCmd("PORT " + this.PortParam(ipaddress, 50001) + "\r\n"); listener.Start(); ExecCmd(cmd); client = listener.AcceptTcpClient(); listener.Stop(); return client; }
備考
以下はTcpClientを使用したC#のソースです。VBに変換して試してみてください。
//Portコマンドパラメータ作成 // ip - IPアドレス // port - port番号 private string PortParam(IPAddress ip, int port) { string addr = ip.ToString().Replace('.', ','); int p1 = port / 256; int p2 = port % 256; return addr + "," + p1.ToString() + "," + p2.ToString(); } //アクティブモード接続 // cmd - コマンド private TcpClient getActvConnection(string cmd) { IPHostEntry localhost = Dns.GetHostEntry(Dns.GetHostName()); IPAddress ipaddress = localhost.AddressList[0]; TcpListener listener = new TcpListener(ipaddress, 50001); TcpClient client; ExecCmd("PORT " + this.PortParam(ipaddress, 50001) + "\r\n"); listener.Start(); ExecCmd(cmd); client = listener.AcceptTcpClient(); listener.Stop(); return client; }
備考
ありがとうございます
.NET Framework 2.0 からFtpWebRequestクラスが使えると思います。ソケットで書く必要無いのでは?
http://www.devasp.net/net/articles/display/246.html
http://support.microsoft.com/kb/832679/ja
FtpWebRequestのUsePassiveでパッシブとアクティブを切り替えます。
http://msdn2.microsoft.com/ja-jp/library/system.net.ftpwebreques...
ありがとうございます
ありがとうございます