控制台浏览器代码实战
本文章代碼只是為了能夠深刻的了解網絡通訊,主要功能是獲取網頁內容,無須把代碼背出來,只須看懂,能改改就行了
首先需要創建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());
??????????????????? }
??????????????? }
??????????? }
執行結果:
轉載于:https://www.cnblogs.com/genesis/p/4652778.html
總結
以上是生活随笔為你收集整理的控制台浏览器代码实战的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rotate array 旋转数组
- 下一篇: 前端构建工具gulp入门教程