私はC#でTCPソケットを使いこなしていましたが、設定したFTPサーバと通信する際に問題があります。私は最初に接続して220メッセージを受け取ることができますが、 "USER nrcrast"コマンドを送信すると応答は得られず、DataAvailableプロパティはfalseを返します。誰か私が間違っていることを知っている?ここに私のコードは、これまでのところです:あなたはオーバー探しに興味があるならTCPを使用してC#でFTPクライアントを実装する
がnamespace TCPClient
{
public partial class TCPClientForm : Form
{
private TcpClient myClient;
NetworkStream stream;
public TCPClientForm()
{
InitializeComponent();
send();
}
void send()
{
while (true)
{
try
{
myClient = new TcpClient("nrcrast.dyndns.info", 21);
break;
}
catch (SocketException ex)
{
Console.WriteLine(ex.ToString());
}
}
stream = myClient.GetStream();
int sendOffset = 0;
int recOffset=0;
int dataLength;
Byte[] receiveData = new Byte[256];
// wait for a response
dataLength = stream.Read(receiveData, recOffset, receiveData.Length);
String recvdMessage = System.Text.Encoding.ASCII.GetString(receiveData, 0, dataLength);
Console.WriteLine(recvdMessage.ToString());
recOffset+=dataLength;
String message = "USER nrcrast";
Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);
stream.Write(data, 0, data.Length);
sendOffset += data.Length;
// wait for a response
while (!stream.DataAvailable)
{
}
dataLength = stream.Read(receiveData, 0, receiveData.Length);
recvdMessage = System.Text.Encoding.ASCII.GetString(receiveData, 0, dataLength);
Console.WriteLine(recvdMessage.ToString());
}
}
私はあなたが学習の練習としてこれをやっていると仮定しています。そのため、FtpWebRequest(http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.aspx)を使用していないのは、クラス? –
...または[WebClient](http://msdn.microsoft.com/en-us/library/system.net.webclient.aspx) –
はい。ちょうどプロトコル自体を理解しようとしているので、後でWindows phone用のFTPクライアントをコードすることができます。 (私はftpwebrequestがWindows phone codingのために利用できると信じていません) – nrcrast