Я тестирую немного кода, который может извлекать файлы либо из локальной файловой системы, либо из http или ftp.Чтобы протестировать его, я создал простой метод, который использует класс HTTPListener из BCL для запуска одноразового веб-сервера в другом потоке, он просто обслуживает байтовый массив, который я отправляю, а затем выключается.(См. Код для этого ниже).
Мне просто интересно, есть ли какой-нибудь простой способ сделать то же самое для ftp?В .NET нет такой вещи, как класс FTPListener (насколько я знаю).Я не очень разбираюсь в FTP, но, насколько я знаю, есть канал управления и канал данных, поэтому я могу представить, что это будет немного сложнее, чем пример http ниже.Так что, есть идеи, если не писать с нуля с помощью сокетов?Любые классы, которые я мог бы использовать?
public static void Serve(int port, int statusCode, byte[] responseBody,
Dictionary<string,string> headers)
{
new Thread(delegate()
{
var listener = new HttpListener();
listener.Prefixes.Add(string.Format("http://localhost:{0}/", port));
listener.Start();
var context = listener.GetContext();
context.Response.StatusCode = statusCode;
context.Response.ContentLength64 = responseBody.Length;
if (headers != null)
{
foreach (string header in headers.Keys)
{
context.Response.AddHeader(header, headers[header]);
}
}
context.Response.OutputStream.Write(responseBody, 0, responseBody.Length);
context.Response.OutputStream.Close();
listener.Stop();
}).Start();
}