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

首先需要创建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

控制台浏览器代码实战相关推荐

  1. 一个EXE引发的危机 — 浏览器劫持实战篇

    一个EXE引发的危机 --浏览器劫持实战篇 作者:小金 转载请注明出处和作者 一. 一个EXE引发的危机 网络程序员小李最近有点忙,公司要做的网页工程项目已经快到尾期了,可是开发小组的进度仍然迟迟跟不 ...

  2. 吴恩达《深度学习专项》笔记+代码实战(二):简单的神经网络——逻辑回归

    这堂课要学习的是逻辑回归--一种求解二分类任务的算法.同时,这堂课会补充实现逻辑回归必备的数学知识.编程知识.学完这堂课后,同学们应该能够用Python实现一个简单的小猫辨别器. 前排提示:本文篇幅较 ...

  3. java 秒杀代码_Java秒杀系统实战系列~商品秒杀代码实战

    摘要: 本篇博文是"Java秒杀系统实战系列文章"的第六篇,本篇博文我们将进入整个秒杀系统核心功能模块的代码开发,即"商品秒杀"功能模块的代码实战. 内容: & ...

  4. java秒杀系统 代码大全_Java秒杀系统:商品秒杀代码实战

    内容: "商品秒杀"功能模块是建立在"商品详情"功能模块的基础之上,对于这一功能模块而言,其主要的核心流程在于:前端发起抢购请求,该请求将携带着一些请求数据:待 ...

  5. Java秒杀系统实战系列~商品秒杀代码实战

    摘要: 本篇博文是"Java秒杀系统实战系列文章"的第六篇,本篇博文我们将进入整个秒杀系统核心功能模块的代码开发,即"商品秒杀"功能模块的代码实战. 内容: & ...

  6. 一文弄懂元学习 (Meta Learing)(附代码实战)《繁凡的深度学习笔记》第 15 章 元学习详解 (上)万字中文综述

    <繁凡的深度学习笔记>第 15 章 元学习详解 (上)万字中文综述(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net ...

  7. R语言使用tryCatch函数调试R代码实战:tryCatch函数运行正常R代码、tryCatch函数运行有错误(error)的R代码示例/tryCatch函数运行有警告(warning)的R代码示例

    R语言使用tryCatch函数调试R代码实战:tryCatch函数运行正常R代码.tryCatch函数运行有错误(error)的R代码示例/tryCatch函数运行有警告(warning)的R代码示例 ...

  8. sklearn基于make_scorer函数为Logistic模型构建自定义损失函数并可视化误差图(lambda selection)和系数图(trace plot)+代码实战

    sklearn基于make_scorer函数为Logistic模型构建自定义损失函数并可视化误差图(lambda selection)和系数图(trace plot)+代码实战 # 自定义损失函数 i ...

  9. sklearn基于make_scorer函数为Logistic模型构建自定义损失函数+代码实战(二元交叉熵损失 binary cross-entropy loss)

    sklearn基于make_scorer函数为Logistic模型构建自定义损失函数+代码实战(二元交叉熵损失 binary cross-entropy loss) # 广义线性模型中的各种连接函数: ...

最新文章

  1. 关于压缩jar包时提示*.*没有这个文件或目录的问题以及解决办法:
  2. Oracle执行计划顺序
  3. python怎么使用int四舍五入_使用Python 3的数字格式可以将数字四舍五入到成百上千个...
  4. int类型数字特别大
  5. mysql写下拉树_PHP+mysql实现从数据库获取下拉树功能的方法
  6. DFS实现floodfill算法
  7. [Unity][FlowCanvas] FlowScript 实现基础人物移动
  8. [ActionScript 3.0] 获取TextFiled字符边框
  9. 【华为云技术分享】【昇腾】【玩转Atlas200DK系列】Atlas 200 DK安装python的hiai库以及opencv
  10. Windows Mobile中的WebService应用
  11. EDUCoder编程练习题解(字符数组)
  12. NSMutableString基本概念
  13. js 处理 cookie的存储与删除
  14. Python中奇技淫巧之定时运行函数
  15. 数的“平方”速算秘诀,超实用的技巧,3秒出答案
  16. jetpack之workManager官方文档解析
  17. MWC 2018前瞻:三星华为诺基亚们会展示这些黑科技!
  18. 2021双十一自动浏览脚本,京东淘宝自动化脚本末班车
  19. Linux放行单个8080端口和放行8000-9000端口区间
  20. html页面在ie上不兼容,四招解决IE 11浏览器网页不兼容问题

热门文章

  1. JavaScript基础笔记
  2. 这几种程序员前途无量!你在其中吗?
  3. 软件设计文档国家标准_GB8567--88
  4. java 没有提示信息,ActionErrors没有提示信息
  5. python软件开发目录_软件开发目录规范
  6. 使用nextInt()等接受输入时必须注意换行符的输入
  7. Scala入门到精通——第二十三节 高级类型 (二)
  8. 推荐系统遇上深度学习(二十二):DeepFM升级版XDeepFM模型强势来袭!
  9. MySQL数据库备份工具mysqldump的使用(转)
  10. spring boot与spring mvc的区别是什么?