博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
服务器处理静态文件请求
阅读量:5233 次
发布时间:2019-06-14

本文共 1557 字,大约阅读时间需要 5 分钟。

本文章内容是在上一遍文章更改,主要是请求不同静态文件的内容,如请求1.html或2.html,最后将内容输出到控制台并在浏览器显示出来

//读取浏览器发过来的内容

Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
serverSocket.Bind(new IPEndPoint(IPAddress.Any, 8080));//程序要监听8080端口,如果别的程序已经占了这个端口,那程序就会抛异常
serverSocket.Listen(10);//启动监听10个用户
//进行死循环是为了可以多个请求
while (true)
{
  Console.WriteLine("等着请求");
  Socket socket = serverSocket.Accept();//等待有人请求,返回上一次Socket的通讯通道
  Console.WriteLine("来了请求了");
  string firstline;
  using (NetworkStream stream = new NetworkStream(socket))
  using (StreamReader reader = new StreamReader(stream))
  {
    firstline = reader.ReadLine();//读取用户访问的页面第一行,读取GET /1.html HTTP/1.1
    string line;
    while ((line = reader.ReadLine()) != null)
    {
      Console.WriteLine(line);
      if (line.Length <= 0)
      {
        break;//遇到空行,请求结束,不用再等了
        //如果不break,就一直卡在ReadLine()等着浏览器发出的数据
      }
    }
  }

  string[] strs = firstline.Split(' ');

  string url = strs[1];//1.html

  //返回给浏览器的内容

  using (NetworkStream stream = new NetworkStream(socket))
  using (StreamWriter write = new StreamWriter(stream))
  {
    string filePath = @"D:\1\" + url;
    if (File.Exists(filePath))
    {
      write.WriteLine("HTTP/1.1 200 OK");
      write.WriteLine();
      string html = File.ReadAllText(filePath);
      write.WriteLine(html);
    }
    else
    {
      write.WriteLine("HTTP/1.1 404 NOT FOUND");
      write.WriteLine();
      write.WriteLine("没有找到");
    }
  }
  socket.Disconnect(false);//断开通讯
}

转载于:https://www.cnblogs.com/genesis/p/4657259.html

你可能感兴趣的文章
【练习】使用事务和锁定语句
查看>>
centos7升级firefox的flash插件
查看>>
Apache Common-IO 使用
查看>>
评价意见整合
查看>>
二、create-react-app自定义配置
查看>>
Android PullToRefreshExpandableListView的点击事件
查看>>
系统的横向结构(AOP)
查看>>
linux常用命令
查看>>
NHibernate.3.0.Cookbook第四章第6节的翻译
查看>>
使用shared memory 计算矩阵乘法 (其实并没有加速多少)
查看>>
Django 相关
查看>>
git init
查看>>
训练记录
查看>>
IList和DataSet性能差别 转自 http://blog.csdn.net/ilovemsdn/article/details/2954335
查看>>
Hive教程(1)
查看>>
第16周总结
查看>>
C#编程时应注意的性能处理
查看>>
Fragment
查看>>
比较安全的获取站点更目录
查看>>
苹果开发者账号那些事儿(二)
查看>>