VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > VB.net教程 >
  • vb.net 实现TCP/IP协议实例详解(使用Socket实现)

最近因项目需求要求实现基于vb.net的TCP/IP协议,在网上也没有找到特别好的实例,故在学习完成后写下如下文字,仅供大家学习,如有错误还请大家批评指正,感谢!

 

 

 

本文主要由三部分组成,第一部分展示代码实现的功能;第二部分解释部分与代码相关的基础知识;第三部分讲解服务器端与客户端的实现。

 

本文代码参考自https://code.msdn.microsoft.com/windowsdesktop/Simple-Multi-User-TCPIP-43cc3b44,推荐大家将代码下载下来再结合本文学习

代码在参考代码上做了两个调整,1. 增加功能:服务器端可向客户端发送数据;2.删除功能:客户端A向服务器端发送的数据,客户端B也能收到

若需要修改后的代码请移步https://download.csdn.net/download/xsz_94/10508618 (不免费)

一. 代码执行效果

 

把这一部分放在最开始是想让大家对功能有个直观的印象,也好看看本文所述与您的需求是否一致。

 

 

服务器端开始监听,而后客户端开始发送连接请求,连接成功后,客户端喝服务器端可进行通信。

 

二. 相关基础知识

 

加入本章的初衷是,在学习代码的过程中,由于这部分知识的匮乏,增加了读懂代码的难度,我了解这些知识后,问题也变的迎刃而解。

 

本部分简要说明三个方面知识,2.1 TCP/IP握手步骤,2.2 使用IAsyncResult进行Socket异步通信 2.3 线程(委托的使用)

 

如您已对这三个方面的知识有所了解,则可移步第三部分。

 

2.1 TCP/IP握手步骤

 

 

 

Step1: 在创建连接之前,服务器进入监听(Listen)状态,即准备接收客户端的连接请求

 

Step2: 客户端向服务器发送连接请求

 

Step3: 服务器向客户端发送应答

 

Step4: 客户端向服务器发送应答

 

关于TCP报文各标志位的使用等详细内容,本文不再阐述,想了解更多关于TCP/IP协议内容可移步https://blog.csdn.net/u011318165/article/details/48102939

 

2.2 使用IAsyncResult进行Socket异步通信

 

关于这部分,我想您只需要记住一句话就好

 

BeginXXXX/EndXXXXX方法重载可以传入一个Object类型的参数,这样可以把一些需要用到的对象传进去,在方法内部,通过IAsyncResult的AsyncState属性就可以把这个Object类型的参数取出来。

更详细的内容可移步https://www.cnblogs.com/HopeGi/archive/2013/04/13/3018402.html

2.3 线程(委托的使用)

 

Step1:创建一个委托

 

Delegate Sub DelegateType()
Step2: 声明、实例化一个委托并绑定Sample方法

 

Dim a as New DelegateType(AddressOf Sample)
Step3: 通过调用委托,间接调用方法Sample
a.Invoke()

更多关于委托的内容可移步https://blog.csdn.net/leimengyuanlian/article/details/8488092

 

三. 代码各功能模块讲解

 

 

3.1 服务器端

 

服务器端有两个类,ConnectionInfo用于对客户端进行读写操;MonitorInfo用于操作每个客户端与服务器端的connection

 

 

MonitorInfo结构模块:

 

 

ConnectionInfo结构模块:

 

 

 

服务器模块结构:

 

3.2 客户端

 

与服务器端类似,可自行学习。

如有讲解需要,可以留言让我知道。

 

 

 


相关教程