扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
Dim tcpClient As TcpClient Dim nsStream As NetworkStream tcpClient = New TcpClient( "www.microsoft.com" , 8000) '对远程主机的8000端口提出TCP连接申请 nsStream = tcpClient.GetStream ( ) 'TCP连接建立后,获得网络数据传输的基础数据流 |
方法 | 说明 |
BeginRead | 开始异步读者基础数据流。 |
BeginWrite | 开始异步写入基础数据流。 |
Close | 关闭流并可选择关闭基础套接字。 |
EndRead | 结束异步读取。 |
EndWrite | 结束异步写入。 |
Flush | 刷新流中的数据。 |
Read | 从流中读取数据。 |
Seek | 将流的当前位置设置为给定值。 |
SetLength | 设置流的长度。 |
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 | 接收缓冲区的大小 |
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 | 关闭侦听器 |
表7:TcpListener 类常用的方法
属性 | 说明 |
LocalEndpoint | 获取当前TcpListener的基础EndPoint |
Active | 获取一个值,该值指示 TcpListener 是否正主动侦听客户端连接 |
Server | 获取基础网络Socket |
表8:TcpListener 类常用的属性
二.Visual Basic .Net实现基于TCP协议数据传送程序的体系结构:
在下面介绍的用Visual Basic .Net实现基于TCP协议的数据传送程序是由二个子程序组成的。也可以看成是服务器端程序和客户端程序,其中:服务器端程序的功能是侦听端口号,接收远程主要的TCP连接申请,并接收远程主机传送来的文字数据。另外一个子程序,也就是所谓的客户端程序,主要实现向网络的远程主机提出TCP连接申请,并在连接申请通过后,向远程主机传送文字数据。下面来详细介绍Visual Basic .Net实现TCP协议网络数据传送的服务器端程序和客户端程序的具体步骤。
三.服务器端程序的具体实现步骤:
服务器端程序的实现关键在于侦听端口号,接收远程主机的TCP连接申请,获得网络数据传输的基础数据流,并通过基础数据流接收数据。接收数据使用的是StreamReader中ReadLine方法,由于ReadLine方法是一个阻塞式的方法,所以在下面具体的实现步骤中,是接收数据是在创建的线程中完成的,具体可参阅下面实现步骤中的第十一和十二步。以下是Visual Basic .Net实现TCP协议客户端程序实现的具体步骤:
1. 启动Visual Studio .Net。
2. 选择菜单【文件】|【新建】|【项目】后,弹出【新建项目】对话框。
3. 将【项目类型】设置为【Visual Basic项目】。
4. 将【模板】设置为【Windows应用程序】。
5. 在【名称】文本框中输入【服务器端程序】。
6. 在【位置】的文本框中输入【E:\VS.NET项目】,然后单击【确定】按钮,这样在"E:\VS.NET项目"目录中就产生了名称为"服务器端程序"的文件夹,并在里面创建了名称为"服务器端程序"的项目文件。
7. 把Visual Studio .Net的当前窗口切换到【Form1.vb(设计)】窗口,并从【工具箱】中的【Windows窗体组件】选项卡中往Form1窗体中拖入下列组件,并执行相应的操作:
一个Label组件。
一个StatusBar组件。
一个ListBox组件。
一个Button组件,并在这个Button组件拖入Form1的设计窗体后,双击它,则系统会在Form1.vb文件分别产生这个组件的Click事件对应的处理代码。
8. 按照表05所示调整窗体中各组件属性的数值:
组件类型 | 组件名称 | 属性 | 设置结果 |
Form | Form1 | Text | 服务器端程序 |
Form1 | MaximizeBox | False | |
Form1 | FormBorderStyle | FixedSingle | |
Button | Button1 | Text | 启动服务 |
Button1 | FlatStyle | Flat | |
Label | Label1 | Text | 服务尚未启动 |
StatusBar | StatusBar1 | Text | 无连接! |
表05:【服务器端程序】项目中组件设定数值表