Visual C#TCP协议编程
-
Visual C# TCP协议编程基础
-
TCP协议层次结构
-
TCP协议规范
-
TCP协议相关类简介
-
TcpListener
-
TcpClient
-
NetworkStream
Visual C# TCP协议编程基础
TCP协议层次结构
OSI七层模型:在计算机网络产生之初,每个计算机厂商都有一套自己的网络体系结构的概念,它们之间互不相容。由于不同的局域网有不同的网络协议,不同的传输介质也各有其电气性能,为了使不同的网络能够互连,必须建立统一的网络互连协议。为此,ISO(国际标准化组织)提出了网络互连协议的基本框架,称为开放系统互连(OSI)参考模型,只要遵循OSI标准,一个系统可以和位于世界上任何地方的、也遵循OSI标准的其他任何系统进行连接.现在此模型已成为计算机间和网络间进行通信的主要结构模型。目前使用的大多数网络通信协议的结构都是基于
OSI 模型的。
OSI将通信过程定义为七层,即将连网计算机间传输信息的任务划分为七个更小、更易于处理的任务组。每一个任务或任务组则被分配到各个 OSI 层。每一层都是独立存在的,因此分配到各层的任务能够独立地执行。这样使得变更其中某层提供的方案时不影响其他层。OSI参考模型分为7层,分别是物理层(Physical Layer),数据链路层(Data Link Layer),网络层(Network Layer),传输层(Transport Layer),会话层(Session Layer),表示层(Presentation Layer)和应用层(Application
Layer)。
TCP/IP模型:ISO制定的OSI参考模型的过于庞大、复杂招致了许多批评。与此对照,由技术人员自己开发的TCP/IP协议栈获得了更为广泛的应用。如下图所示,是TCP/IP参考模型和OSI参考模型的对比示意图。
TCP/IP协议栈是美国国防部高级研究计划局计算机网(Advanced Research Projects Agency Network,ARPANET)和其后继因特网使用的参考模型。TCP/IP参考模型分为四个层次:应用层、传输层、网络互连层和主机到网络层。如下图所示。
TCP协议相关类的简介
在TCP协议编程中,经常使用的类有TcpListener类,TcpClient类,NetworkStream类。
TcpListener类:
TcpListener类从 TCP 网络客户端侦听连接。TcpListener类提供一些简单方法,用于在阻塞同步模式下侦听和接受传入连接请求。可使用TcpClient或Socket来连接TcpListener。可使用IPEndPoint、本地
IP 地址及端口号或者仅使用端口号,来创建TcpListener。可以将本地 IP 地址指定为Any,将本地端口号指定为
0(如果希望基础服务提供程序为您分配这些值)。如果选择这样做,可使用LocalEndpoint来标识已指定的信息。
Start方法用来开始侦听传入的连接请求。Start将对传入连接进行排队,直至您调用Stop方法或它已经完成MaxConnections排队为止。可使用AcceptSocket或AcceptTcpClient从传入连接请求队列提取连接。这两种方法将阻塞。如果要避免阻塞,可首先使用Pending方法来确定队列中是否有可用的连接请求。调用Stop方法来关闭TcpListener。
注意:Stop方法不会关闭任何已接受的连接。需要用户负责分别关闭这些连接
TcpClient类:
为 TCP 网络服务提供客户端连接。TcpClient类提供了一些简单的方法,用于在同步阻塞模式下通过网络来连接、发送和接收流数据。
为使TcpClient连接并交换数据,使用 TCPProtocolType创建的TcpListener或Socket必须侦听是否有传入的连接请求。可以使用下面两种方法之一连接到该侦听器:
-
创建一个TcpClient,并调用三个可用的Connect方法之一。
-
使用远程主机的主机名和端口号创建TcpClient。此构造函数将自动尝试一个连接。
公共构造函数
公共属性
公共方法
Close
受 .NET Framework 精简版的支持。 |
关闭 TCP 连接并释放与TcpClient关联的所有资源。 |
Connect
受 .NET Framework 精简版的支持。 |
已重载。使用指定的主机名和端口号将客户端连接到 TCP 主机。 |
GetStream
受 .NET Framework 精简版的支持。 |
返回用于发送和接收数据的NetworkStream。 |
NetworkStream类:
提供用于网络访问的基础数据流。
NetworkStream类提供在阻塞模式下通过
Stream套接字发送和接收数据的方法。您可以使用
NetworkStream类进行同步和异步数据传输。要创建
NetworkStream,必须提供连接的
Socket。也可指定
NetworkStream对所提供的
Socket具有哪些
FileAccess权限。默认情况下,关闭
NetworkStream并不会关闭所提供的
Socket。如果要使
NetworkStream拥有关闭所提供的
Socket的权限,则必须将
ownsSocket构造函数参数的值指定为
true。
将Write和Read方法用于简单的单线程同步阻塞
I/O。若要使用不同的线程来处理 I/O,则请考虑使用BeginWrite/EndWrite和BeginRead/EndRead方法进行通信。
NetworkStream不支持对网络数据流的随机访问。CanSeek属性用于指示流是否支持查找,它的值始终为false。读取Position属性、读取Length属性或者调用Seek方法都会引发NotSupportedException。
公共构造函数
公共属性
公共方法
BeginRead
受 .NET Framework 精简版的支持。 |
已重写。从NetworkStream开始异步读取。 |
BeginWrite
受 .NET Framework 精简版的支持。 |
已重写。开始向流异步写入。 |
Close
受 .NET Framework 精简版的支持。 |
已重写。关闭NetworkStream。 |
EndRead
受 .NET Framework 精简版的支持。 |
已重写。处理异步读取的结束。 |
EndWrite
受 .NET Framework 精简版的支持。 |
已重写。处理异步写入的结束。 |
Flush
受 .NET Framework 精简版的支持。 |
已重写。刷新流中的数据。保留此方法供将来使用。 |
Read
受 .NET Framework 精简版的支持。 |
已重写。从NetworkStream读取数据。 |
ReadByte(从Stream继承)
受 .NET Framework 精简版的支持。 |
从流中读取一个字节,并将流内的位置向前推进一个字节,或者如果已到达流的末尾,则返回 -1。 |
Seek
受 .NET Framework 精简版的支持。 |
已重写。将流的当前位置设置为给定值。此方法始终引发NotSupportedException。 |
Write
受 .NET Framework 精简版的支持。 |
已重写。将数据写入NetworkStream。 |
WriteByte(从Stream继承)
受 .NET Framework 精简版的支持。 |
将一个字节写入流内的当前位置,并将流内的位置向前推进一个字节。 |
分享到:
相关推荐
1. 基于vs2019 平台的C# Tcp/Ip 编程
Visual C#.NET网络编程PDF文件,本书结合大量实例,全面介绍了基于Visual C#.NET的网络编程,内容包括Web Forms、ASP.NET、TCP/UDP端口通信、远程访问、MSMQ消息队列、电子邮件客户端系统、网络编程应用技巧与Web ...
该层的类比位于最底层的Socket类提供了更高层次的抽象,它们封装 TCP 和 UDP 套接字的创建,不需要处理连接的细节,这使得我们在编写套接字级别的协议时,可以更多地尝试使用 TCPClient 、 UDPClient和TcpListener,...
全书共分13章,主要内容包括网络编程原理、Visual C# 2005的套接字以及多线程的开发、基于各种不同协议的网络编程应用模块,并通过几个典型的实例介绍了Visual C# 2005网络编程的实际应用。 本书注重代码的通用性和...
介绍了基于Visual C#.NET的网络编程,内容包括WEB FORMS,ASP.NET,TCP/UDP端口通信,远程访问,MSMQ消息队列,电子邮件客户端系统,网络编程应用技巧与WEB SERVICES等。
本书结合大量实例,全面介绍了基于visual c#.net的网络编程,内容包括web forms、asp.net、tcp、udp端口通信、远程访问、msmq消息队列、电子邮作客户端系统、网络编程应用技巧与web services等。 本书所有的源...
本书结合大量实例,全面介绍了基于visual c#.net的网络编程,内容包括web forms、asp.net、tcp、udp端口通信、远程访问、msmq消息队列、电子邮作客户端系统、网络编程应用技巧与web services等。 本书所有的源...
第3章 开发基于TCP协议的应用程序 第4章 开发基于UDP的应用程序 第5章 开发基于SNMP协议的应用程序 第6章 使用.NET发送邮件 第7章 FTP下载与文件传输 第8章 基于C#.NET的网络管理模块 第9章 编写基于.NET...
Visual C#_NET网络核心编程,讲解了C#的socket、tcp、ftp编程等
Visual C sharp TCP socket 编程
isual+C#.NET网络编程 本书结合了大量的实例,全面介绍了visual+C#.NET网络编程,内容包括 Web Forms,ASP.NET TCP/UDP端口通信,远程访问,MSMQ消息队列、电子邮件服务端系统、网络编程技巧。
郑阿奇著《C#网络编程》,介绍TCP、UDP编程,P2P编程、FTP编程、Web浏览器开发,电子邮件、HTTP编程
其中第1~5章介绍了C#多线程处理、TCP、UDP、SMTP和POP3协议的高级应用以及P2P应用编程,第6章介绍了网络数据加密与解密的方法,第7章介绍了三维设计与多媒体编程方法,第8章为与本书配套的上机实验指导。...
本书结合大量实例,全面介绍了基于visual c#.net的网络编程,内容包括web forms、asp.net、tcp、udp端口通信、远程访问、msmq消息队列、电子邮作客户端系统、网络编程应用技巧与web services等。 本书所有的源...
C#网络编程,一应俱全,好东西,值得拥有
基于TCP和UDP的网络程序设计高级编程。
学习以c#的必备书 本书介绍了如何使用Visual C++ 6.0编写Windows应用程序。全书内容全面、结构清晰、由浅入深、注重实用,并结合了大量的实例,以方便读者理解。本书既包含菜单、鼠标、键盘等基本操作,又包含图形...
本书结合大量实例,全面介绍了基于visual c#.net的网络编程,内容包括web forms、asp.net、tcp、udp端口通信、远程访问、msmq消息队列、电子邮作客户端系统、网络编程应用技巧与web services等。
起步篇为第1章~第10章,主要介绍认识Visual C#,C#语言基础,C#语句控制,数组、面向对象编程,熟悉WinForms应用程序,WinForms窗体介绍,WinForms应用程序开发常用控件,菜单栏、工具栏和状态栏设计及对话框等内容...
这是一个基于c#用Visual studio.NET开发的聊天室,希望对大家有所帮助!