我想从Windows Phone 8.1连接到我的filezilla ftp服务器。
我现在有这个代码:
StreamSocket s = new StreamSocket();
await s.ConnectAsync(new HostName("192.168.254.53"), "21");
DataWriter writer = new DataWriter(s.OutputStream);
byte[] data = GetBytes(string.Format("{0}\r\n", "USER test"));
writer.WriteBytes(data);
await writer.StoreAsync();
await writer.FlushAsync();
...
static byte[] GetBytes(string str)
{
byte[] bytes = new byte[str.Length * sizeof(char)];
System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
return bytes;
}
ConnectAsync正常运行:
(000013)03/03/2015 17:14:13 - (not logged in) (192.168.254.53)> Connected on port 21, sending welcome message...
(000013)03/03/2015 17:14:13 - (not logged in) (192.168.254.53)> 220-FileZilla Server version 0.9.49 beta
(000013)03/03/2015 17:14:13 - (not logged in) (192.168.254.53)> 220-written by Tim Kosse (tim.kosse@filezilla-project.org)
(000013)03/03/2015 17:14:13 - (not logged in) (192.168.254.53)> 220 Please visit https://filezilla-project.org/
但对于user命令,这是服务器收到的内容:
(000013)03/03/2015 17:14:13 - (not logged in) (192.168.254.53)> U
(000013)03/03/2015 17:14:13 - (not logged in) (192.168.254.53)> 500 Syntax error, command unrecognized.
(000013)03/03/2015 17:14:13 - (not logged in) (192.168.254.53)> S
(000013)03/03/2015 17:14:13 - (not logged in) (192.168.254.53)> 500 Syntax error, command unrecognized.
(000013)03/03/2015 17:14:13 - (not logged in) (192.168.254.53)> E
(000013)03/03/2015 17:14:13 - (not logged in) (192.168.254.53)> 500 Syntax error, command unrecognized.
(000013)03/03/2015 17:14:13 - (not logged in) (192.168.254.53)> R
(000013)03/03/2015 17:14:13 - (not logged in) (192.168.254.53)> 500 Syntax error, command unrecognized.
(000013)03/03/2015 17:14:13 - (not logged in) (192.168.254.53)>
我是否正确地写入了我的OutputStream?
答案 0 :(得分:0)
我现在正在使用它:
byte[] data = Encoding.Unicode.GetBytes("USER ippon\r");
在调试期间,我注意到了这一点:
Encoding.Unicode.GetBytes函数在每隔一个字节后添加一个0字节。这就是为什么它不起作用! 我的代码现在:
StreamSocket s = new StreamSocket();
await s.ConnectAsync(new HostName("192.168.254.53"), "21");
byte[] data = Encoding.Unicode.GetBytes("USER ippon\r");
data = data.Where(val => val != 0).ToArray();
await s.OutputStream.WriteAsync(data.AsBuffer());
await s.OutputStream.FlushAsync();