我目前面临的问题是无法使我的C#程序将我想要发送的文件写入响应中(我正在写入文件的字节),并且拥有有效的HTTP响应,如果我将文件附加到响应中,则我测试它的浏览器会显示
最初,我使用的是HttpListener,但这要求我每次都以管理员身份运行我的IDE,因此我决定摆脱它,并开始使用
这只是一个完全使用C#运行并利用
我一直在寻找其他通过TCP / HTTP发送文件的方法,但似乎两件事很明显,即如何正确地执行此操作没有得到很好的记录,而且没有人针对此特定情况提出了同样的问题。
到目前为止,处理传入连接的响应代码如下。
预期的结果是浏览器将显示图像,就像您从imgur链接中看到的那样,基本上与我用来显示当前结果的截图相同的格式是预期的结果。
ERR_INVALID_HTTP_RESPONSE
。最初,我使用的是HttpListener,但这要求我每次都以管理员身份运行我的IDE,因此我决定摆脱它,并开始使用
TcpListener
。这只是一个完全使用C#运行并利用
System.Net
中的TcpListener
的简单Web服务器。到目前为止,我尝试使用StreamWriter
的BaseStream
将文件的字节写入响应中。我一直在寻找其他通过TCP / HTTP发送文件的方法,但似乎两件事很明显,即如何正确地执行此操作没有得到很好的记录,而且没有人针对此特定情况提出了同样的问题。
到目前为止,处理传入连接的响应代码如下。
StreamReader sr = new StreamReader(client.GetStream());
StreamWriter sw = new StreamWriter(client.GetStream());
string request = sr.ReadLine();
if (request != null) {
//byte[] testData = Encoding.UTF8.GetBytes("Test");
string[] tokens = request.Split(" ");
try {
FileInfo file = files[tokens[1]];
byte[] fileBytes = File.ReadAllBytes(file.FullName);
sw.WriteLine("HTTP/1.0 200 OK\n");
sw.BaseStream.Write(fileBytes, 0, fileBytes.Length);
sw.Flush();
} catch {
sw.WriteLine("HTTP/1.0 404 OK\n");
sw.Write("<h1>Error 404</h1><p>The file you were looking for does not exist</p>");
sw.Flush();
}
}
client.Close();
预期的结果是浏览器将显示图像,就像您从imgur链接中看到的那样,基本上与我用来显示当前结果的截图相同的格式是预期的结果。
404
部分;OK
更多是为了人类。但从技术上讲,404
应该是Not Found
。 - Kenneth K.