.Net
Framework
SDK中提供了很多用以实现TCP协议或与之相关协议的类库,本文就选择五个比较典型,也是比较简单的类加以介绍,即:TcpListener类、TcpClient类、NetworkStream类、StreamReader类和StreamWriter类。TcpClient主要用以提出TCP连接申请。TcpListener主要用以侦听端口号,并接收远程主机的TCP连接申请。NetworkStream类是实现TCP数据传输的基础数据流,StreamReader类作用是通过操作NetworkStream,实现从网络接收数据。StreamWriter类作用是通过操作NetworkStream,实现向网络传输数据。
1. NetworkStream类:
NetworkStream类主要是提供用于网络访问的基础数据流。它主要是网络数据传输的载体,并提供同步、异步方式来访问网络数据流。虽然NetworkStream类有构造函数,但在实际情况中更多是通过TcpClient实例的GetStream方法来初始化NetworkStream实例。以下就是使用TcpClient实例的GetStream方法来初始化NetworkStream实例具体代码:
在下面介绍的程序示例中,就是利用NetworkStream作为传送和接收数据的载体。而操作这个载体的就是StreamWriter类和StreamReader类。表01和表02是NetworkStream类中一些常用的方法、属性及其说明。
表01:NetworkStream类中常用的方法及其说明
其中"BeginRead"、"EndRead"和"BeginWrite"、"EndWrite"是二对异步方法,起作用分别相当于"Read"和"Write"方法。
表02:NetworkStream类中属性及其说明
2. StreamReader类:
StreamReader类能够实现对基础数据流的读操作,从而实现对经过基础数据流传送来的数据。表03是StreamReader类的常用的方法及其说明:
表03:NetworkStream类中常用的方法及其说明
3. StreamWriter类:
StreamWriter类能够实现对基础数据流的写操作,从而实现提供基础数据流来传送数据。表04是StreamWriter类的常用方法及其说明:
表04:StreamWriter类的常用方法及其说明
4.TcpClient 类:
TcpClient 类主要为TCP 网络 服务提供客户端连接。TcpClient是类基于Socket类构建,
它以更高的抽象程度提供TCP服务。TcpClient 提供了通过网络连接、发送和接收数据的简单方法。表05和表06分别是TcpClient类常用方法、属性及其说明。
表05:TcpClient类常用的方法
表06:TcpClient类常用的属性
5.TcpListener 类:
TcpListener类的主要作用是从TCP网络客户端侦听连接,TcpListener类基于Socket 类
提供更高理念级别的TCP服务。可以使用TcpListener从TCP客户端侦听连接。像 FTP 和 HTTP 这样的应用层协议是在 TcpListener 类的基础上建立的。表7和表8分别是TcpListener类常用方法、属性及其说明:
表7:TcpListener 类常用的方法
1. NetworkStream类:
NetworkStream类主要是提供用于网络访问的基础数据流。它主要是网络数据传输的载体,并提供同步、异步方式来访问网络数据流。虽然NetworkStream类有构造函数,但在实际情况中更多是通过TcpClient实例的GetStream方法来初始化NetworkStream实例。以下就是使用TcpClient实例的GetStream方法来初始化NetworkStream实例具体代码:
Dim tcpClient As TcpClient Dim nsStream As NetworkStream tcpClient = New TcpClient( "www.microsoft.com" , 8000) '对远程主机的8000端口提出TCP连接申请 nsStream = tcpClient.GetStream ( ) 'TCP连接建立后,获得网络数据传输的基础数据流 |
在下面介绍的程序示例中,就是利用NetworkStream作为传送和接收数据的载体。而操作这个载体的就是StreamWriter类和StreamReader类。表01和表02是NetworkStream类中一些常用的方法、属性及其说明。
方法 | 说明 |
BeginRead | 开始异步读者基础数据流。 |
BeginWrite | 开始异步写入基础数据流。 |
Close | 关闭流并可选择关闭基础套接字。 |
EndRead | 结束异步读取。 |
EndWrite | 结束异步写入。 |
Flush | 刷新流中的数据。 |
Read | 从流中读取数据。 |
Seek | 将流的当前位置设置为给定值。 |
SetLength | 设置流的长度。 |
Write | 将数据写入流。 |
表01:NetworkStream类中常用的方法及其说明
其中"BeginRead"、"EndRead"和"BeginWrite"、"EndWrite"是二对异步方法,起作用分别相当于"Read"和"Write"方法。
属性 | 说明 |
CanRead | 获取当前流是否支持读取。 |
CanSeek | 获取流是否支持查找。该属性总是返回 false。 |
CanWrite | 获取当前流是否支持写入。 |
DataAvailable | 获取是否可以在流上读取数据。 |
Length | 流上可用数据的长度。 |
Position | 获取或设置流中的当前位置。 |
表02:NetworkStream类中属性及其说明
2. StreamReader类:
StreamReader类能够实现对基础数据流的读操作,从而实现对经过基础数据流传送来的数据。表03是StreamReader类的常用的方法及其说明:
方法 | 说明 |
Close | 关闭StreamReader并释放与阅读器关联的所有系统资源。 |
DiscardBufferedData | 允许StreamReader丢弃其当前数据。 |
Peek | 返回下一个可用的字符,但不使用它。 |
Read | 读取输入流中的下一个字符或下一组字符。 |
ReadBlock | 从当前流中读取最大数量的字符并从索引开始将该数据写入缓冲区。 |
ReadLine | 从当前流中读取一行字符并将数据作为字符串返回。 |
ReadToEnd | 从流的当前位置到末尾读取流。 |
3. StreamWriter类:
StreamWriter类能够实现对基础数据流的写操作,从而实现提供基础数据流来传送数据。表04是StreamWriter类的常用方法及其说明:
方法 | 说明 |
Close | 关闭当前的StreamWriter和基础流。 |
Flush | 清理当前编写器的所有缓冲区,并使所有缓冲数据写入基础流。 |
Write | 写入基础数据流。 |
WriteLine | 写入重载参数指定的某些数据,后跟行结束符。 |
表04:StreamWriter类的常用方法及其说明
4.TcpClient 类:
TcpClient 类主要为TCP 网络 服务提供客户端连接。TcpClient是类基于Socket类构建,
它以更高的抽象程度提供TCP服务。TcpClient 提供了通过网络连接、发送和接收数据的简单方法。表05和表06分别是TcpClient类常用方法、属性及其说明。
方法 | 说明 |
Close | 关闭 TCP 连接 |
Connect | 使用指定的主机名和端口号将客户端连接到 TCP主机 |
GetStream | 返回用于发送和接收数据的流 |
表05:TcpClient类常用的方法
属性 | 描述 |
LingerState | 有关套接字逗留时间的信息 |
NoDelay | 一个值,该值在发送或接收缓冲区未满时启用延迟 |
ReceiveBufferSize | 接收缓冲区的大小 |
ReceiveTimeout | TcpClient在启动后为接收数据而等待的时间长度 |
SendBufferSize | 发送缓冲区的大小 |
SendTimeout | 在您启动发送操作后TcpClient将为接收确认而等待的时间长度 |
表06:TcpClient类常用的属性
5.TcpListener 类:
TcpListener类的主要作用是从TCP网络客户端侦听连接,TcpListener类基于Socket 类
提供更高理念级别的TCP服务。可以使用TcpListener从TCP客户端侦听连接。像 FTP 和 HTTP 这样的应用层协议是在 TcpListener 类的基础上建立的。表7和表8分别是TcpListener类常用方法、属性及其说明:
方法 | 说明 |
AcceptSocket | 接受挂起的连接请求 |
AcceptTcpClient | 接受挂起的连接请求 |
Pending | 确定是否有挂起的连接请求 |
Start | 开始侦听网络请求 |
Stop | 关闭侦听器 |
属性 | 说明 |
LocalEndpoint | 获取当前TcpListener的基础EndPoint |
Active | 获取一个值,该值指示 TcpListener 是否正主动侦听客户端连接 |
Server | 获取基础网络Socket |