




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、-基于C#语言,主讲教师:钱 哨 本课学时:72课时 联系方式:,Windows程序设计,第七章、 WinForms网络编程,本章主要内容介绍7.1 windows和窗体7.2 Visual Stutio .net IDE简介7.3 事件处理,CONTENT,本章学习目标:,了解组网 通过 WinForms访问 Internet 通过 WinForms进行套接字编程,组网简介 3-1,打印机在物理上连接至单台计算机,连接在网络上的多位用户,打印?,打印?,打印?,组网是指将网络中的计算机连接在一起 可共享打印机以供网络中所有用户使用,降低了为每个用户采购打印机而带来的成本, 充分利用资源,组网
2、简介 3-2,组网是将许多设备(如计算机、打印机和工作站)连接成一个网络以共享资源,WinForms网络编程中用到 System.Net 和 System.Net.Sockets 命名空间,System.Net 命名空间主要处理高层的操作,例如下载和上载文件,System.Net.Sockets 包含执行低层操作的类, 处理用于让计算机之间高效通信的代码,组网简介 3-3,电源插座,电度表,具有唯一的地址,网络套接字,使用数据包和 IP 地址,IP 地址,唯一地标识 Internet 上的每台电脑,IP(Internet协议),低层的路由协议可将数据分成很小的数据包并通过网络将它们发送到某个地
3、址。,TCP(传输控制协议),可靠传输数据的高层协议,UDP(用户数据报协议),支持快速、无连接、不可靠的数据包传输,访问 Internet 6-1,Internet 应用程序,客户端应用程序,服务器应用程序,万维网是一个客户端/服务器应用程序, 借助浏览器对世界各地的 Web 服务器上存储的数据进行访问,WebClient 类,请求文件并从特定 URL 接收文件,不能继承,具有一些方法可用于从 URI 标识的任何本地 Intranet 或 Internet 资源发送和接收数据。,访问 Internet 6-2,URI 用于标识 Internet 上的资源以及通信协议,路径标识符从服务器上查找
4、请求的信息,服务器标识符可标识 DNS 主机名或 TCP 地址,模式标识符标识用于通信的协议,可选查询字符串将信息从客户端传递至服务器,访问 Internet 6-3,发送或接收来自统一资源标识符的数据,向统一资源标识符发出请求,得到统一资源标识符发出的响应,访问 Internet 6-4,WebClient 类的属性和方法,创建如下所示的窗体,2.将下列名称空间添加至窗体。 using System.Net; using System.IO; 3.在按钮 btnGo 的 Click 事件中添加下列代码,以从文本框输入的 URI 中读取数据。 private void btnGo_Click(
5、object sender, System.EventArgs e) WebClient client = new WebClient(); Stream strm = client.OpenRead(txtURI.Text); StreamReader sr = new StreamReader(strm); string line; while(line = sr.ReadLine() != null) lstRecd.Items.Add(line); strm.Close(); ,访问 Internet 6-5,WebRequest 类,抽象类,封装与服务器连接、发送请求和接收响应的详细
6、信息,使用传递至其 Create() 方法的 URI 值创建特定于协议的实例,对 WebRequest 实例调用的 GetResponse() 方法帮助向 Internet 资源发出请求,访问 Internet 6-6,WebResponse 类,抽象类,提供来自 URI 的响应。,客户端应用程序不创建 WebResponse 对象,因为在对 WebRequest 实例调用 GetResponse() 方法时会创建它们。,private void btnGo_Click(object sender, System.EventArgs e) WebRequest wrq =WebRequest.
7、Create(txtURI.Text); WebResponse wrs=wrq.GetResponse(); Stream strm=wrs.GetResponseStream(); StreamReader sr = new StreamReader(strm); string line; while(line=sr.ReadLine() != null) lstRecd.Items.Add(line); strm.Close(); ,使用WebRequest 和 WebResponse 类实现“执行”按钮的功能,套接字编程,System.Net.Sockets名称空间包含允许直接发送TC
8、P网络请求或侦听特定端口上的TCP网络请求的相关类,大量的方法和属性用于网络连接,提供客户端连接,用于创建和使用 TCP 网络服务,可用于从 TCP 网络客户端侦听连接,可用于为 UDP 客户端创建连接(它是 TCP 的备用协议,在本地网络上使用),使用 TCP 类,TCP ( Transfers Control Protocol ,传输控制协议)类包含连接两个点并在这两个点之间发送数据的方法 一个点由 IP 地址和端口号组成。现有协议具有定义好的端口号 HTTP 使用端口号 80;SMPT 或电子邮件使用端口号 25; FTP 使用端口号 21 Internet Assigned Numbe
9、r Authority (IANA,Internet 编号分配管理机构)负责为这些有名的服务分配端口号 TCP 提供有保证的传送、错误更正和数据缓冲 TcpClient 类具有通过网络连接、发送和接收流数据的简单方法 TcpListener 类具有侦听进入的 TCP 连接的方法0,TcpClient 对象,TCPListener 类的方法,TcpListener类具有侦听进入的TCP连接的方法,其中Start()方法用于开始侦听进入的连接请求,并且将把进入的连接放置在队列中,直到调用Stop()为止。AcceptSocket()或AcceptTcpClient()方法可用于从进入的连接请求队列
10、中提取连接。,TCP 类应用程序实例 8-1,将以下两个名称空间添加至窗体,using System.Net.Sockets; using System.IO ;,在窗体的声明区域中声明下列变量,public TcpListener tcpListener; private NetworkStream networkStream ; private StreamReader streamReader ; private StreamWriter streamWriter ; public Socket socketForClient;,TCP 类应用程序实例 8-2,private void
11、btnstart_Click(object sender, System.EventArgs e) tcpListener = new TcpListener(1234); tcpListener.Start(); MessageBox.Show(服务器已启动) ; socketForClient = tcpListener.AcceptSocket(); networkStream = new NetworkStream(socketForClient); streamWriter = new StreamWriter(networkStream); streamReader = new S
12、treamReader(networkStream); try if (socketForClient.Connected) MessageBox.Show(客户端已连接); string line = streamReader.ReadLine(); txtServerClient.Text=line; line=line.ToUpper()+ !; streamWriter.WriteLine(line); txtServerServer.Text=line; streamWriter.Flush() ; catch (Exception ae) Console.WriteLine(ae.
13、ToString() ; ,在按钮 btnstart 的 Click 事件中添加下列代码,TCP 类应用程序实例 8-3,private void btnRecd_Click(object sender, System.EventArgs e) try if (socketForClient.Connected) string line = streamReader.ReadLine(); txtServerClient.Text=line; line=line.ToUpper()+ !; streamWriter.WriteLine(line); txtServerServer.Text=l
14、ine; streamWriter.Flush() ; catch (Exception ae) Console.WriteLine(ae.ToString() ; ,在按钮 btnRecd 的 Click 事件中添加下列代码,以连续将数据传输到客户端,TCP 类应用程序实例 8-4,private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e) DialogResult answer=MessageBox.Show (“这将关闭服务器。您是否确实要 关闭它?,提示框,MessageBoxBu
15、ttons.YesNo ); if (answer=DialogResult.Yes) Application.Exit(); if (answer = DialogResult.No) e.Cancel =true; socketForClient.Close(); ,在窗体 Form1 的 Closing 事件中添加下列代码,以关闭所有连接,TCP 类应用程序实例 8-5,将以下两个名称空间添加至窗体,using System.Net.Sockets; using System.IO ;,声明下列变量,TcpClient myclient; private NetworkStream ne
16、tworkStream ; private StreamReader streamReader ; private StreamWriter streamWriter ;,TCP 类应用程序实例 8-6,在窗体的构造函数中添加代码,以在特定端口建立与服务器的连接,public Form1() InitializeComponent(); try myclient = new TcpClient(localhost, 1234); catch MessageBox.Show(未能在 0:999 处连接至服务器 , localhost); return; networkStream = mycli
17、ent.GetStream(); streamReader = new StreamReader(networkStream); streamWriter = new StreamWriter(networkStream); ,TCP 类应用程序实例 8-7,在命令按钮 btnSend 的 Click 事件中编写下列代码,private void btnSend_Click(object sender, System.EventArgs e) txtServer.Text= ; if(txtClient.Text=) MessageBox.Show(请在文本框中输入内容); txtClient
18、.Focus(); return ; try string s; streamWriter.WriteLine(txtClient.Text); streamWriter.Flush(); s= streamReader.ReadLine(); Console.WriteLine(正在读取消息) ; txtServer.Text=s; catch(Exception ee) MessageBox.Show(“从服务器中读取时产生异常+ee.ToString(); ,private void Form1_Closing(object sender, System.ComponentModel.C
19、ancelEventArgs e) streamReader.Close() ; streamWriter.Close() ; networkStream.Close(); ,TCP 类应用程序实例 8-8,在窗体 Form1 的 Closing 事件中添加下列代码以关闭资源,UDP 类,当应用程序中速度和性能需求比可靠性更重要时,开发人员可以使用 UDP ( User Datagram Protocol ,用户数据报协议) 与 TcpClient 相比, UdpClient 类的接口更小且更简单。 UdpClient 不包含返回网络流以进行读写的方法 因为 UDP 是无连接协议,所以与远程主
20、机的连接是在发送和接收数据时进行的,P2P 技术简介,P2P,即英文Peer-to-Peer的缩写,译为对等互联或点对点技术。P2P是一种用于在不同PC用户之间,不经过中继设备直接交换数据或服务的技术,它允许Internet用户直接使用对方的文件。网络中的任意用户都可以直接连接到其他用户的计算机,并进行文件的交换,而不需要连接到服务器上再进行浏览与下载。因为消除了中间环节,P2P技术使得网络上的沟通变得更容易、更直接 它建立在TcpListener以及TcpClient这两个类基础上,P2P 应用程序示例 5-1,1. 创建一个名为“Example 2”的 Windows 应用程序,2. 将文
21、件名“Form1.cs”更改为“frmSendFile.cs”,3. 设计如图所示的窗体。将文本框分别命名为 txtHostName 和 txtPort,并且将按钮命名为 btnSendFile,发送应用程序,应用程序示例演示了如何从一点向另一点发送文件,此应用程序打开与服务器的 TCP 连接,并向它发送此C# 源代码,P2P 应用程序示例 5-2,4. 在项目中添加命名空间。,using System.Net; using System.Net.Sockets; using System.IO;,5. 在 btnSendFile 按钮的 Click 事件中添加代码。,private void
22、 btnSendFile_Click(object sender, System.EventArgs e) /TcpClient 对象可指定主机名和端口 TcpClient objTcpClient = new TcpClient(txtHostName.Text, Int32.Parse(this.txtPort.Text); /为 TcpClient 对象创建新的流 NetworkStream objNetworkStream = objTcpClient.GetStream(); /在打开模式下添加文件 FileStream objFileStream = File.Open(.frmS
23、endFile.cs,FileMode.Open); /读取字节 int data =objFileStream.ReadByte(); while(data != -1) /Writing bytes to the stream objNetworkStream.WriteByte(byte)data); data = objFileStream.ReadByte(); /关闭所有打开的流 objFileStream.Close(); objNetworkStream.Close(); objTcpClient.Close(); ,代码使用主机名和端口号创建 TcpClient,6. 生成应
24、用程序。,P2P 应用程序示例 5-3,在连接的另一侧,File Receive 应用程序会在文本框中显示已接收的文件,新建一个名为“Example 3”的新 Windows 应用程序。 将文件名 Form1.cs 更改为 frmOrdersReport.cs。 设计一个带有名为 txtDisplayFile 文本框的窗体。,4. 在项目中添加命名空间。,using System.Net; using System.Net.Sockets; using System.IO;,private void frmFileReceive_Load(object sender, System.EventArgs e) /指定机器的 IP 地址 IPAddress objIPAddress = IPAddress.Parse(29); /新建侦听器 TcpListener objTcpListener = new TcpListener(objIPAddress,2112); /启动 L
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 废旧材料建筑改造方案
- 车贷业务风险预警及应急处理合同
- 餐饮品牌加盟与运营管理合同
- 岩石开挖施工方案
- 别墅庄园管理方案
- 特斯拉裁员面试题及答案
- 腹腔镜胆结石术后护理
- 育苗大棚装修方案(3篇)
- 秘密法考试题及答案
- 2026版《全品高考》选考复习方案生物0525 非选择题强化练(二)含答案
- GB/T 15684-2015谷物碾磨制品脂肪酸值的测定
- 百灵达x32数字调音台说明书简体中文
- GA/T 947.2-2015单警执法视音频记录系统第2部分:执法记录仪
- 职业技能培训鉴定教材编写规定
- 喷雾干燥器课程设计终稿
- 2023年潍坊市交通投资有限公司招聘笔试题库及答案解析
- 住院医师规范化培训小讲课教学设计课件
- 酸化土壤改良技术规范DB50-T 1146-2021
- 英威腾GD变频器调试说明
- 季节性施工专项施工方案(常用)
- 仓库作业指导书
评论
0/150
提交评论