C# 网络编程之最简单浏览器实现
最近学习C#网络编程的HTTP协议编程,HTTP即Hypertext Transfer Protocol的缩写,意为:超文本传输协议。
其中与HTTP相关的知识主要有六个类的知识,分别是
(1).HttpWebRequest类:用于获取和操作HTTP请求;
(2).HttpWebResponse类:用于获取和操作HTTP应答;
(3).WebRequest类:用于获取和操作Web请求;
(4).WebResponse类:用于获取和操作Web应答;
(5).Uri类:用于获取和操作网络资源位置;
(6).WebClient类:用于网络客户端操作.
下面主要是利用利用上面所述类的方法获取相应URL的应答内容,通过赋值数据流,再从字节流中读取内容赋值给webBrowser控件中实现最简单的浏览器,但内容虽少,但也体现了浏览器基本的一些操作和HTTP相关的网络编程知识。
一.界面设计
界面中添加label1”输入网址“,添加一个textBox作为输入的网址,添加button1其text属性为”浏览“。最重要的是添加一个webBrower控件,该控件指"允许用户在该控件中浏览网页",并且设置其Anchor属性(定义控件绑定到容器边缘)为Top、Bottom、Left、Right。这样点击全屏时能动态跟随变换的显示网页内容。
二.源代码
主要是点击”浏览“按钮生成相应的点击事件,在事件中添加相关浏览器代码即可实现,同时还要添加相应的命名空间。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; //新添加命名空间
using System.Net;
using System.IO; namespace HttpWeb
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} //双击"浏览"添加Click事件
private void button1_Click(object sender, EventArgs e)
{
//获取输入的URL
string url = textBox1.Text; //创建http链接
//HttpWebRequest对象实例:该类用于获取和操作HTTP请求 var可改成HttpWebRequest
var request = (HttpWebRequest)WebRequest.Create(url); //Create:创建WebRequest对象 //HttpWebResponse对象实例:该类用于获取和操作HTTP应答 var可改成HttpWebResponse
var response = (HttpWebResponse)request.GetResponse(); //GetResponse:获取答复 //构造数据流对象实例
Stream stream = response.GetResponseStream();//GetResponseStream:获取应答流
StreamReader sr = new StreamReader(stream); //从字节流中读取字符 //从流当前位置读取到末尾并显示在WebBrower控件中
string content = sr.ReadToEnd();
webBrowser1.DocumentText = content;
}
}
}
三.运行结果
输入http://www.baidu.com点击”浏览“按钮即可实现浏览百度网页,同时注意在输入URL中要加入"HTTP://”,它只是简单的实现,必然处理的方式都是按照基本语法解析。
点击“全屏”能如下显示:
但是在浏览时也有一些问题:一个是提示“没有权限”的脚本错误,另一个是浏览有的网站如我们的校内网时它的显示格式是错误的,我们有时上网也遇到过校内网这种错误的格式,这些都是我接下来需要思考的问题。同时,在浏览百度网站时我在IE中的状态是登录的,能显示我的用户名,而用该浏览器发现是未登录状态,这就证实了很多我们上网的信息是临时存储在Cookies或Session中的,这帮助我回顾了以前PHP课程中的内容。
最后,通过这个例子能很好的了解一些HTTP网络编程知识,同时能实现简单的浏览器,如果有不足或错误的地方,希望大家海涵!希望这篇文章能帮组大家,同时也帮组了我自己。(BY:Eastmount 2013-7-26-早8点)
C# 网络编程之最简单浏览器实现的更多相关文章
- 【LINUX/UNIX网络编程】之简单多线程服务器(多人群聊系统)
RT,Linux下使用c实现的多线程服务器.这个真是简单的不能再简单的了,有写的不好的地方,还希望大神轻拍.(>﹏<) 本学期Linux.unix网络编程的第四个作业. 先上实验要求: [ ...
- Android 网络编程基础之简单聊天程序
前一篇讲了Android的网络编程基础,今天写了一个简单的聊天程序分享一下 首先是服务端代码: package com.jiao.socketdemo; import java.io.Buffered ...
- C# 网络编程之网页简单下载实现
这是根据<C#网络编程实例教程>中学到的知识实现的一个C#网页简单下载器,其中涉及到的知识主要是HTTP协议编程中相关类:HttpWebRequest类.HttpWebResponse类. ...
- Linux网络编程:一个简单的正向代理服务器的实现
Linux是一个可靠性非常高的操作系统,但是所有用过Linux的朋友都会感觉到, Linux和Windows这样的"傻瓜"操作系统(这里丝毫没有贬低Windows的意思,相反这应该 ...
- java网络编程——socket实现简单的CS会话
还记得当年学计网课时用python实现一个简单的CS会话功能,这也是学习socket网络编程的第一步,现改用java重新实现,以此记录. 客户端 import java.io.*; import ja ...
- C#_Socket网络编程实现的简单局域网内即时聊天,发送文件,抖动窗口。
最近接触了C#Socket网络编程,试着做了试试(*^__^*) 实现多个客户端和服务端互相发送消息 发送文件抖动窗口功能 服务端: using System; using System.Collec ...
- [Python 网络编程] TCP、简单socket模拟ssh (一)
OSI七层模型(Open System Interconnection,开放式系统互联) 应用层 网络进程访问应用层: 为应用程序进程(例如:电子邮件.文件传输和终端仿真)提供网络服务: 提供用户身份 ...
- linux网络编程1 最简单的socket编程
下面是socket编程的服务器端 先看一个图,1 #include<stdio.h> #include<stdlib.h> #include<string.h> # ...
- python网络编程之最简单的单工通信
tcp_server.py from socket import * server = socket(AF_INET, SOCK_STREAM) server.bind(('',12345)) ser ...
随机推荐
- C#中使用ref 和 out 的一点认识
ref 通常我们向方法中传递的是值,方法获得的是这些值的一个拷贝,然后使用这些拷贝,当方法运行完毕后,这些拷贝将被丢弃,而原来的值不会受到影响. 这种情况是通常的,当然还有另外一种情况,我们向方法传递 ...
- 我在Github上的flare-spark项目
Flare-Spark 介绍 我在自己的github上建了个flare-spark项目,本身是Apache Spark项目Master分支的镜像.在Spark的基础上,添加了flare子项目. 估计大 ...
- java程序连接MongoDB副本集测试
三个节点有一个节点挂掉也不会影响应用程序客户端对整个副本集的读写! public class TestMongoDBReplSet { public static void main(String[] ...
- JavasScript实现调查问卷插件
原文:JavasScript实现调查问卷插件 鄙人屌丝程序猿一枚,闲来无事,想尝试攻城师是感觉,于是乎搞了点小玩意.用js实现调查问卷,实现了常规的题型,单选,多选,排序,填空,矩阵等. 遂开源贴出来 ...
- 使用collectd与visage收集kvm虚拟机性能实时图形
软件功能: 通过collectd软件来监控收集kvm虚拟机的性能数据,包含cpu,memory.磁盘IO.网络流量等 通过visage软件将收集到的数据绘制图形. 安装: 系统环境:ubuntu12. ...
- FPGA 设计怎样进行面积优化(逻辑资源占用量优化)
FPGA面积优化 1 对于速度要求不是非常高的情况下,我们能够把流水线设计成迭代的形式,从而反复利用FPGA功能同样的资源. 2 对于控制逻辑小于共享逻辑时,控制逻辑资源能够用来复用,比如FIR滤波器 ...
- .NET编程和SQL Server ——Sql Server 与CLR集成 (学习笔记整理-1)
原文:.NET编程和SQL Server ——Sql Server 与CLR集成 (学习笔记整理-1) 一.SQL Server 为什么要与CLR集成 1. SQL Server 提供的存储过程.函数 ...
- 【C#版本详情回顾】C#3.0主要功能列表
隐式类型的本地变量和数组 在与本地变量一起使用时,var 关键字指示编译器根据初始化语句右侧的表达式推断变量或数组元素的类型 对象初始值设定项 支持无需显式调用构造函数即可进行对象初始化 集合初始值设 ...
- JS中的prototype(转载)
在研究别人写的js图像处理算法时,发现其中脚本中大量使用prototype,很难读明白,就网上查了下资料发现这篇文章很易懂,就转载如下: 1 原型法设计模式 在.Net中可以使用clone()来实现原 ...
- asp.net mvc使用validate.js验证 若name属性包含特殊字符则加上双引号即可
rules: { "Can.CName": { required: true, ...