networkstream

.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实例具体代码:


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从流的当前位置到末尾读取流。
表03:NetworkStream类中常用的方法及其说明
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接收缓冲区的大小
ReceiveTimeoutTcpClient在启动后为接收数据而等待的时间长度
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关闭侦听器
表7:TcpListener 类常用的方法


属性说明
LocalEndpoint获取当前TcpListener的基础EndPoint
Active获取一个值,该值指示 TcpListener 是否正主动侦听客户端连接
Server获取基础网络Socket





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值