版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、NetNet中的中的TCPTCP编程基础编程基础 小组成员:周斌杰小组成员:周斌杰 周霄晗周霄晗 张鼎张鼎 陈童陈童 周深立周深立 田力田力 田廷魁田廷魁 1 2 3 TcpClient类介绍 通过TcPClient类实现与TCP主机通信流程 TcpListener类 主讲人:陈童 张鼎 主讲人:周斌杰 周深立 周霄晗 主讲人:田力 田廷魁 课程目录 TCP简介 TCP(传输控制协议)Transmission Control Protocol 传输控制协议TCP 是一种面向连接的、可靠的、传输层通信协议,由IETF的RFC 793说明 (specified)。TCP在IP报文的协议号是6。在简
2、化的计算机网络OSI模 型中,它完成第四层传输层所指定的功能,UDP是同一层内另一个重 要的传输协议。 TCP主要特点: 1面向连接的传输; 2端到端的通信; 3高可靠性,确保传输数据的正确性,不出现丢失或乱序; 4全双工方式传输; 5采用字节流方式,即以字节为单位传输字节序列; 6紧急数据传送功能。 利用TCP开发应用程序时,.NET框架提供两种工作方式,一 种是同步(Synchronous)工作方式,一种是异步 (Asynchronous)工作方式。 (1)同步工作方式 同步工作方式是指利用TCP编写的程序执行到发送、接收 或监听语句时,在未完成工作前不再继续下面的工作,即 处于阻塞状态,
3、直到该语句完成相应的工作后才继续执行 下一条语句。 (2)异步工作方式 异步工作方式是指程序执行到发送,接收或监听语句时, 不论工作是否完成,都会继续往下执行。 例如:同步接收数据时,接收方执行到接受语句后将处于阻 塞方式,只有接收到对方发来的数据后才继续执行下一条 语句;而如果采用异步工作方式,则接收方在执行到接收 语句后,无论是否接受到对方发来的数据,程序都继续往 下执行。 TcpClient类? 为 TCP 网络服务提供客户端连接。 TcpClient类的构造函数 TcpClient 构造函数 () TcpClient 构造函数 (IPEndPoint) TcpClient 构造函数 (
4、String, Int32) TcpClient类的属性以及方法的介绍 张 鼎 201226680124 TcpClient类的常见属性见下表。 TcpClient类的常用方法见下表。 TcpClient用法的举例: BeginConnect (IPAddress,Int32,AsyncCallback,Object) 开始一个对远程主机连接的异步请求。开始一个对远程主机连接的异步请求。 远程主机由远程主机由 IPAddress 和端口号和端口号 (Int32) 指定。指定。 TcpClient tcpClient = new TcpClient(); tcpClient.Connect(co
5、ntosoServer,11000); NetworkStream networkStream = tcpClient.GetStream(); networkStream .ReadTimeout = 10; byte byte = new byte1024; networkStream.Read(bytes , 0 ,1024); string data = Encoding.UTF8.GetString(bytes); networkStream.Close(); tcpClient.Close(); 通过通过 .NET中的TCP编程 TCPClientTCPClient类类 实现与实现
6、与TCP主机通信流程主机通信流程 通过TCP主机通信流程图 .NET中的TCP编程 创建TCPClient实 例 与远程主机建立连 接 发送和接收数据 关闭TCP套接字 1 创建创建TCPClientTCPClient 实例实例 支持TCp/IP协议的网络通信的操作基本单元 SocketSocket 服务器监服务器监 听听 处于等待连接的状态,实时监控网络状态。 客户端请客户端请 求求 由客户端的套接字提出连接请求,要连接的目标是服务器端 的套接字 连接确认连接确认 当服务器端套接字监听到或者说接收到客户端套接字的连接 请求时,它就响应客户端套接字的请求,建立一个新的线程 套接字之间的连接步骤
7、套接字之间的连接步骤 套接字处理数据的liang种 模式 同步同步套套 接字接字 在通过Socket进行连接、接收、发送操作时, 客户机或服务器不会处于阻塞方式,而是利用 callback机制进行连接、接收和发送处理,这 样就可以在调用发送或接收的方法后直接返回, 并继续执行下面的程序。 特点是在通过Socket进行连接、接收、 发送操作时,客户机或服务器在接收 到对方响应前会处于阻塞状态,即一 直等到接收到对方请求时才继续执行 下面的语句。 异步异步套接字套接字 4 4种构造函数的重载形式种构造函数的重载形式 使用本机默认的IP地址并将使用默认的通信端口号0。 若有多个IP地址则不选择 Tc
8、pClient(TcpClient( ) ) 初始化 TcpClient 类的新实例并连接到指定主机 上的指定端口。 使用本机IPEndPoint创建TcpClient的实例。 使用指定的地址族初始化TcpClient类的新实例。 TcpClient(AddressTcpClient(Address Family)Family) TcpClient(String, TcpClient(String, Int32)Int32) TcpClient(IPEndPoTcpClient(IPEndPo int)int) What is IPEndPoint ? 在Internet中, TCP/IP使用
9、一个网络地址网络地址和一个服务端口号来 唯一标识设备和服务。 网络地址标识网络上的设备;端口号标识该设备上的特定服务。 在C#中,使用IPEndPoint类表示这个端点, IPEndPoint类常用的构造函数为: public IPEndPoint(IPAddress, int); 与远程主机建立连接与远程主机建立连接 2 可以通过可以通过ConnectConnect方法来实现与指定远程主机的连接。方法来实现与指定远程主机的连接。 Connect(IPEndPoint) Connect(String, Int32) Connect(IPAddress,Int32) Connect(IPAddr
10、ess) 使用指定的远程网络终结点将客户端连接到远程使用指定的远程网络终结点将客户端连接到远程TCP主机。主机。 使用指定的远程网络终结点将客户端连接到远程使用指定的远程网络终结点将客户端连接到远程TCP主机。主机。 使用指定的使用指定的IP地址和端口号将客户端连接到远程地址和端口号将客户端连接到远程TCP主机。主机。 使用指定的使用指定的IP地址和端口号将客户端连接到远程地址和端口号将客户端连接到远程TCP主机。主机。 TcpClientTcpClient实例的创建以及与指定远程主机的连接过程。实例的创建以及与指定远程主机的连接过程。 m_client = new TcpClient( );
11、 m_client.Connect(m_servername, m_port); L利用 3 利 用 NetworkStream 发送和接收数据 对应对应 关系?关系? 1.创建创建TcpListener实例,监听端口实例,监听端口 1.创建创建TcpClient实例实例 2.与远程主机建立连与远程主机建立连 接接 4.关闭套接字关闭套接字 3.发送和接收数(发送和接收数(NetWorkStream) NETWORKSTREAM TcpClient使用标准的Stream流处理 技术,通过使用NetworkStream实例的读写 操作来实现网络数据的接收和发送,因此 更加方便直观。但Networ
12、kStream与普通流 Stream有所不同,NetworkStream没有当前 位置的概念,不支持查找和对数据流的随 机访问。 推测继承关系?推测继承关系? NetworkStream类 System:Object System:Object System:MarshalByRefObject System:MarshalByRefObject System.IO:Stream System.IO:Stream System.Net.Sockets:NetworkStream System.Net.Sockets:NetworkStream (此命名空间下) NetworkStream类的
13、一些函数 http:/ cn/library/workstream(v=vs.110).aspx 1.Write()向流中写入数据()向流中写入数据 2.Read()从流中接收数据()从流中接收数据 3.Flush()() Flush() NetworkStream代码实现 4 关闭关闭TCPTCP套接字套接字 m_client.Close();m_client.Close(); 在与服务器完成通信后,应该调在与服务器完成通信后,应该调 用用Close(Close( ) )方法释放所有的资源方法释放所有的资源 主讲人:田力 田廷魁 语法 构造函数 类的属性 类的方 法 1 2 3 4 工作原理
14、 创建类的实例对象 5 6 主讲内容 建筑业应用软件 回顾与对比 TcpClient类和TcpListener类 TcpClient类和TcpListener类属于.NET框架下网络通信中 的应用层类,为Socket通信提供了更简单,对用户更为友好的 接口。应用层类比位于底层的Socket类提供了更高层次的抽象, 封装了套接字的创建,不需要处理连接的细节。 TcpClient类以更高的抽象程度提供TCP服务的基础,因此 许多应用层次上的通信协议,比如FTP传输协议、HTTP超文 本传输协议都直接创建在TcpClient等类之上。TcpClient类直 接为客户端设计,提供了通过网络连接发送和接
15、收数据的简 单方法;TcpListener类用于服务器端,用来监视TCP端口上客 户端的请求。 语 法 c#c#网络编程网络编程中会常常中会常常 使用使用到到tcpListenertcpListener 和和tcpClienttcpClient这两个这两个 类,另外还有,我们类,另外还有,我们 上学期计算机网络原上学期计算机网络原 理实验课上做的类似理实验课上做的类似 于于qqqq通讯的程序,也通讯的程序,也 有好多地方用到了这有好多地方用到了这 两个类。两个类。 推荐推荐 构造函数 类的属性 类的方法 类的方法 类的方法解析 Start 方法用来开始侦听传入的连接请求。 Start 将对传入
16、连接进行排队,直至您调 用 Stop 方法或它已经完成MaxConnections 排队为止。 可使用 AcceptSocket 或 AcceptTcpClient 从传入连接请求队列提取连接。这两种 方法将阻止。如果要避免阻止,可首先 使用 Pending 方法来确定队列中是否有可 用的连接请求。 调用 Stop 方法来关闭 TcpListener。 注意: Stop Stop 方法不会关闭任何已接受的连方法不会关闭任何已接受的连 接。需要用户负责分别关闭这些连接。接。需要用户负责分别关闭这些连接。 工作原理 原理解析 TcpListenerTcpListener类工作原理类工作原理 Tcp
17、Listener类用于监视TCP端口上 客户端的请求,通过绑定本机IP地址和端 口(IP地址和端口应与客户端请求一致) 来创建TcpListener对象实例,由Start() 方法启动侦听。 当TcpListener侦听到客户端连接后, 根据客户端的请求方式来处理请求。 即如果是Socket连接请求,则使用 AcceptSocket方法,如果是TcpClient连接 请求,则使用AcceptTcpClient方法。最后 要关闭使用的连接。 创建实例的代码讲解 using System;using System; using System.Collections.Generic;using Sy
18、stem.Collections.Generic; using System.ComponentModel;using System.ComponentModel; using System.Data;using System.Data; using System.Drawing;using System.Drawing; using System.Linq;using System.Text;using System.Linq;using System.Text; using System.Windows.Forms;using System.Windows.Forms; using Sys
19、tem.Net;using System.Net; using System.Net.Sockets;using System.Net.Sockets; namespace UseTCPnamespace UseTCP public partial class Form1 : Formpublic partial class Form1 : Form public Form1()public Form1() InitializeComponent(); InitializeComponent(); 完整的代码: 创建实例的代码讲解 private void button1_Click(obje
20、ct sender, EventArgs private void button1_Click(object sender, EventArgs e) e) /初始化一个监听类实例初始化一个监听类实例 TcpListener tcpListener = null; TcpListener tcpListener = null; /初始化一个初始化一个ip ip地址地址 IPAddress ipAddress = IPAddress ipAddress = IPAddress.Parse(textBox1 .Text );IPAddress.Parse(textBox1 .Text ); /定义
21、一个变量存端口号定义一个变量存端口号 int port = Convert.ToInt32 (textBox2.Text);int port = Convert.ToInt32 (textBox2.Text); / /把把ip ip地址跟端口号绑定在监听类的实例地址跟端口号绑定在监听类的实例 上上 tcpListener = new TcpListener(ipAddress, port);tcpListener = new TcpListener(ipAddress, port); /初始化一个接收网络请求的客户端类实初始化一个接收网络请求的客户端类实 例例 TcpClient tcpClient = null; TcpClient tcpClient = null; 创建实例的代码讲解 /开始监听开始监听 tcpListener.Start(); tcpListener.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 贵州黄果树旅游产业开发有限责任公司招聘笔试题库2026
- 2026年海洋资源环境可信数据空间建设与应用
- 河北2026年公务员真题及答案
- 2026上半年四川成都市温江区卫生健康局下属事业单位考核招聘8人备考题库【名校卷】附答案详解
- 2026上海市闵行区华漕学校教师第二批招聘备考题库及答案详解(典优)
- 2026云南临沧市耿马孟康中医医院招聘6人备考题库【研优卷】附答案详解
- 2026青海海北州海晏县三角城镇卫生院招聘B超医生1人备考题库及答案详解(基础+提升)
- 杭州银行2026届春季校园招聘备考题库及完整答案详解(名校卷)
- 2026中国钢研人工智能事业部等单位招聘备考题库(夺分金卷)附答案详解
- 2026江西赣州市全南县公用市政建设集团有限公司招聘1人备考题库及完整答案详解【网校专用】
- 休克诊疗规范课件
- 2025年新生儿窒息复苏试题及答案
- 2026年陕西航空职业技术学院单招职业倾向性考试题库及一套答案详解
- 20万吨-年采矿废石综合回收利用项目环境影响报告书
- (一诊)2026年兰州市高三模拟考试历史试卷(含答案)
- 2025-2026学年教科版(新教材)初中信息科技八年级第二学期教学计划及进度表
- 2026贵州安顺关岭恒升村镇银行春季招聘4人考试参考题库及答案解析
- 企业内部福利待遇制度
- 钢丝pe施工方案(3篇)
- 2026年医疗AI辅助手术报告
- 2026年六安职业技术学院单招职业适应性考试题库含答案详解(考试直接用)
评论
0/150
提交评论