VB .NET TCP/IP通信实现与监听示例
在VB.NET中,TCP/IP通信是用于建立客户端与服务器之间的可靠连接的重要通信方式。本代码片段主要展示了如何在Windows Forms应用程序中实现一个基础的TCP服务器,使用`System.Net.Sockets`命名空间中的类来处理网络连接。以下是关键知识点的详细解释: 1. **Imports语句**: - `Imports System.Net.Sockets`: 引入`System.Net.Sockets`命名空间,这里包含处理TCP/IP通信所需的类,如`TcpClient`、`TcpListener`等。 - `Imports System.IO`: 引入`System.IO`命名空间,用于操作流和数据读写,如`StreamReader`和`StreamWriter`。 2. **类和变量定义**: - `Form1`类: 这是主窗体,包含了客户端和服务器端的处理逻辑。 - `swWriterAsStreamWriter`: 用于将数据写入网络流。 - `client_nsStreamAsNetworkStream`: 客户端的网络流对象,用于双向数据传输。 - `tcpClientAsTcpClient`: 客户端实例,用于连接到服务器。 - `tcpConnectAsBoolean`: 表示是否已成功连接到服务器,初始值为`False`。 - `iPortAsInteger`: 设置服务器监听的端口号(这里是11000)。 - `thThreadReadAsThread`: 一个线程,用于异步读取服务端的数据。 - `tlTcpListenAsTcpListener`: 服务器端监听器,用于接收连接请求。 - `blistenerAsBoolean`: 控制服务器是否继续监听新的连接请求,默认为`True`。 - `Service_nsStream`: 服务端与客户端之间交互的网络流。 - `srReadAsStreamReader`: 从服务端流中读取数据的工具。 3. **Listen()方法**: - 在此方法中,创建了一个`TcpListener`实例,并调用`Start()`方法启动监听。当有新连接时,调用`AcceptTcpClient()`方法接受连接,将连接的客户端存储在`tcClient`变量中。 - `Service_nsStream`被设置为`tcClient.GetStream()`,这表示服务器与客户端间的数据交换通道已经建立。 - 创建一个`StreamReader`实例`srRead`,用于读取接收到的数据。当服务器处于监听状态时,进入一个循环,不断检查`blistener`标志来决定是否继续接收新的连接请求。 4. **状态更新**: - 在整个过程中,通过更新`ToolStripSeviceStatus.Text`,向用户显示连接状态或处理过程的信息。 5. **异步编程**: - 使用线程`thThreadRead`来实现异步读取,这样不会阻塞主线程,提高了程序响应性和效率。 总结来说,这个VB.NET代码片段展示了如何使用TCP/IP协议在Windows Forms中创建一个简单的服务器端程序,它监听特定端口并处理客户端的连接请求。通过`TcpListener`、`TcpClient`和相关的流和网络操作,实现了客户端和服务器之间的双向数据传输。在实际应用中,可能需要根据需求添加错误处理、数据解析和传输逻辑等功能。
'使用到TcpListen?
Imports System.IO
'使用到StreamWriter?
Imports System.Net
'使用IPAddress?、IPHostEntry?等
Imports System.Threading
Public Class Form1
'Client 端?量定?
Private swWriter As StreamWriter
'用以向网?基?数据流?送数据
Private Client_nsStream As NetworkStream
'?建?送数据的网?基?数据流
Private tcpClient As System.Net.Sockets.TcpClient
'通?它??向?程主机提出TCP?接申?
Private tcpConnect As Boolean = False
'定???符,用以表示TCP?接是否建立
'Server端?量定?
Private iPort As Integer = 11000
'定??听端口号
Private thThreadRead As Thread
'?建?程,用以?听端口号,接收信息
Private tlTcpListen As TcpListener
'?听端口号
Private blistener As Boolean = True
'?定?示位,判断?听状?
Private Service_nsStream As NetworkStream
'?建接收的基本数据流
Private srRead As StreamReader
Private tcClient As TcpClient
'用于??客?端TCP?接?求
Private Sub Listen()
Try
tlTcpListen = New TcpListener(iPort)
'以8000端口号来初始化TcpListener?例
tlTcpListen.Start()
'?始?听
Me.ToolStripSeviceStatus.Text = "正在?听..."
tcClient = tlTcpListen.AcceptTcpClient()
'通?TCP?接?求
Service_nsStream = tcClient.GetStream()
'?取用以?送、接收数据的网?基?数据流
srRead = New StreamReader(Service_nsStream)
'以得到的网?基?数据流来初始化StreamReader?例
Me.ToolStripSeviceStatus.Text = "已?建立TCP?接!"
'循??听
While blistener
Dim sMessage As String = srRead.ReadLine()
'从网?基?数据流中?取一行数据
If (sMessage = "STOP") Then
'Me.StartService.Enabled = True
Me.StartService.BeginInvoke(New System.EventHandler(AddressOf StartServiceUpdateUI))
tlTcpListen.Stop()
'???听
Service_nsStream.Close()
srRead.Close()
'?放?源
剩余5页未读,继续阅读
- 粉丝: 0
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 多传感器数据融合手册:国外原版技术指南
- MyEclipse快捷键大全,提升编程效率
- 从零开始的编程学习:Linux汇编语言入门
- EJB3.0实例教程:从入门到精通
- 深入理解jQuery源码:解析与分析
- MMC-1电机控制ASSP芯片用户手册
- HS1101相对湿度传感器技术规格与应用
- Shell基础入门:权限管理与常用命令详解
- 2003年全国大学生电子设计竞赛:电压控制LC振荡器与宽带放大器
- Android手机用户代理(User Agent)详解与示例
- Java代码规范:提升软件质量和团队协作的关键
- 浙江电信移动业务接入与ISAG接口实战指南
- 电子密码锁设计:安全便捷的新型锁具
- NavTech SDAL格式规范1.7版:车辆导航数据标准
- Surfer8中文入门手册:绘制等高线与克服语言障碍
- 排序算法全解析:冒泡、选择、插入、Shell、快速排序