zoukankan      html  css  js  c++  java
  • 控制台浏览器代码实战

    本文章代码只是为了能够深刻的了解网络通讯,主要功能是获取网页内容,无须把代码背出来,只须看懂,能改改就行了

    首先需要创建Socket

    //注意在VS2010中需要写成:new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))//因为Socket继承于IDisposable,所以要using起来
                //连接服务器。http协议默认的端口号是80。每个服务器软件监听一个端口(别的软件就不能监听这个端口了),
                //发送给这个端口的数据只会被这个服务器软件接收到。
                {
                    socket.Connect(new DnsEndPoint("127.0.0.1", 8080));//这里的127.0.0.1可以写成域名地址,因为Socket不知道是什么端口号,所以要写上端口号,网站的端口号一般为80
                    //读写socket通讯数据的流
                    using (NetworkStream netStream = new NetworkStream(socket))
                    using (StreamWriter writer = new StreamWriter(netStream))
                    {
                        writer.WriteLine("GET /123.html HTTP/1.1");//123.html表示要获取的页面,每一行指令都回车一下
                        writer.WriteLine("HOST:127.0.0.1:8080");
                        writer.WriteLine();//空行回车,表示指令结束
                    }
                    using (NetworkStream netStream = new NetworkStream(socket))
                    using (StreamReader reader = new StreamReader(netStream))
                    {
                        string line;
                        while ((line = reader.ReadLine()) != null)//第一种写法
                        //while (!reader.EndOfStream)//第二种写法
                        {
                            //Console.WriteLine(line);
                            Console.WriteLine(reader.ReadLine());
                        }
                    }
                }

    执行结果:

  • 相关阅读:
    [go]go addressable 详解
    [go]灵活的处理json与go结构体
    [django]django内置的用户模型
    [go]文件读写&io操作
    *2.3.2_加入env
    UVM_INFO
    uvm_config_db在UVM验证环境中的应用
    *2.2.4 加入virtual interface
    *2.2.3 加入objection机制
    2.2.2 加入factory机制
  • 原文地址:https://www.cnblogs.com/genesis/p/4652778.html
Copyright © 2011-2022 走看看