2011-12-02 100 views
2

在服务器/客户端环境,我需要通过HTTP协议发送纯文本文件。C# - 发送一个文件通过HTTP

典型场景:
客户端加入服务器,服务器发送一个字符串告诉客户端URL以下载文本文件。网址是:

“IP:PORT /文件夹/文件夹/ file.txt的”(其中 'IP' 和 '端口' 是实际 IP的端口和IE:127.0.0.1:1234)

我需要的服务器,以允许对文件位置的连接,单独文件的位置。 客户端是封闭源代码,所以我无法控制其代码。它应该像HTTP服务器一样工作,但仅限于该文件或至少子文件夹。您应该能够将URL输入浏览器地址并读取文件的内容。

这样做的最好方法是什么?

+0

@Oded - 我不完全确定如何阅读我有的代码,但它使用'NetworkStream'和'StreamReader' /'StreamWriter'。我可以重写整个事情,所以我知道发生了什么。 –

回答

3

最简单的方法是使用HttpListener类。

该手册包含向您介绍如何设置监听器和接收请求的例子,但它并不直接涉及如何检查请求是什么文件,以及如何到该文件反馈给客户端。但是,两者都很容易做,并且不会花费太多代码。

+0

听众并不理想,因为我不知道客户端发送的内容是什么。客户端是封闭源代码,所以我不确定它是如何格式化的。 –

+0

@ZionFox:等等,你说“像HTTP服务器一样”对吧?这正是'HttpListener'所做的。如果您不确定客户端发送了什么,那么您将如何能够解析它? – Jon

+0

我不需要解析客户端发送的内容,除了它的数据包,我已经整理出来了。 URL字符串被转换为字节数组,然后发送给客户端,然后(我认为)检查'关键字'并相应地执行(下载文件的内容)。整个字节数组读取为“cfg = IP:PORT/folder/folder/file.txt”,所以它可能会查找'cfg ='并从后一个子字符串下载文件。 当客户端连接时,它发送一个字符串,我解析并存储在一个变量中,说我可以发送像上面这样的特殊字符串。 –

1

您可以尝试使用现有的网络服务器一样阿帕奇服务于这些文件。

此外,如果这是某种形式的学习锻炼。你可以实现你自己simple HTTP server in C#

+0

HTTP Web服务器是一个困难的选择,因为这个软件可以使用的观众。我预测大多数用户不会知道HTTP是什么,更不用说设置一台服务器来托管文件。 (我个人运行我自己的网络服务器,有4个域名,所以对我来说这样做不是问题,但其他人可能不会有这种奢侈品。) –

+0

我已经包含其他选项以及 –

+0

事实上,我我正在研究它,它似乎很可能工作。谢谢^^ –