所以我回来了关于我的网络服务器的另一个问题。自从我上一个问题以来,我已经添加了几个新功能,但现在我遇到了另一个问题。
我试图让服务器提供通过 HTML 调用的图像。但是,由于某种原因,该图像未显示在网页上。我已经浏览了代码,它似乎确实是通过文件发送的,但它只是没有显示在另一端。这是我的代码:
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Threading;
namespace miniWebServer_csc360
{
    public partial class Form1 : Form
    {
        public static int requestCount = 0;
        public static Boolean singleUse = true;
        public static HttpListener listener = new HttpListener();
        //public static HttpListenerContext context;
        //public static HttpListenerResponse response;
        static Form1 thisform;
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            thisform = this;
        }
        private void start_button_Click(object sender, EventArgs e)
        {
            Thread t = new Thread(serverThread);
            t.Start();
        }
        public static void serverThread()
        {
            if (singleUse)
            {
                listener.Prefixes.Add("http://10.211.55.4:69/");
                listener.Prefixes.Add("http://localhost:69/");
                singleUse = false;
            }
            if (listener.IsListening)
                listener.Stop();
            else
                listener.Start();
            if (listener.IsListening)
            {
                thisform.Invoke((MethodInvoker)delegate { thisform.status_label.Text 
                   = "Listening..."; });
                thisform.Invoke((MethodInvoker)delegate { thisform.start_button.Text 
                   = "Stop Server"; });
            }
            else
            {
                thisform.Invoke((MethodInvoker)delegate { thisform.status_label.Text 
                   = "Not listening..."; });
                thisform.Invoke((MethodInvoker)delegate { thisform.start_button.Text 
                   = "Start Server"; });
            }
            while (listener.IsListening)
            {
                try
                {
                    HttpListenerContext context = listener.GetContext();
                    HttpListenerResponse response = context.Response;
                    requestCount++;
                    thisform.Invoke((MethodInvoker)delegate { thisform.counter.Text 
                       = requestCount.ToString(); });
                    string page = Directory.GetCurrentDirectory() 
                        + context.Request.Url.LocalPath;
                    if (context.Request.Url.LocalPath != "/HEAD.html" 
                         && context.Request.Url.LocalPath != "/favicon.ico")
                    {
                        if (context.Request.Url.LocalPath == "/")
                        {
                            string path = context.Request.Url.LocalPath + "index.html";
                                 thisform.Invoke((MethodInvoker)delegate
                            {
                                thisform.request_Box.AppendText(path + "\r\n");
                            });
                        }
                        else
                        {
                            thisform.Invoke((MethodInvoker)delegate
                            {
                                thisform.request_Box.AppendText
                                  (context.Request.Url.LocalPath + "\r\n");
                            });
                        }
                    }
                    if (context.Request.Url.LocalPath == "/")
                        page += "index.html";
                    TextReader tr = new StreamReader(page);
                    string msg = tr.ReadToEnd();
                    byte[] buffer = Encoding.UTF8.GetBytes(msg);
                    if (context.Request.Url.LocalPath == "/header.html")
                    {
                        File.WriteAllText(Directory.GetCurrentDirectory() + "/HEAD.html",
                            context.Request.HttpMethod + " " +
                            context.Request.RawUrl + " HTTP/" 
                            + context.Request.ProtocolVersion + "\n"
                            + context.Request.Headers.ToString());
                    }
                    response.ContentLength64 = buffer.Length;
                    Stream st = response.OutputStream;
                    st.Write(buffer, 0, buffer.Length);
                    context.Response.Close();
                }
                catch (Exception error)
                {
                }
            }
        }
    }
}
提前致谢!