使用 vbRichClient 代替winsock.ocx

说明:
1此程序由ecz00程序优化而来 地址 http://download.csdn.net/download/ecz00/9403630
因此程序可以说是网上唯一的tcpclient使用的中文案例,提供了我思路,在此感谢
;为什么用这个插件,vb自带的插件winsock 这么有用的插件 居然不是微软自带的插件,
最要命的是 直接注册ocx控件 win7 win10上可能因为序列号无法注册,那么vb下如何开发ip客户端,变得很麻烦,尝试过APi方法的,但是过于复杂,程序量太大,比较麻烦,因此用
此方案比较可行,在原版的基础上花了5天时间摸索和优化,


此版本使用方法
 1 把vbRichClient5.dll放进C:\Windows\SysWOW64 (64位系统)
 2 在vb6中点击 工程->引用 把上面的dll引用进来就可以额,不需要注册
 3:使用sscom5.12.1 或其他tcp调试软件软件启动tcpserver 地址是127,0,0,1 5676
 4:直接运行本软件即可使用。点击连接,显示成功,说明连接成功,可以相互发送数据了


  服务端的程序在原版上未做修改,请自行优化


此软件改进了原版
1:无法显示连接状态和错误信息
2:只能发送不能接收
3:使用主机名的连接方式,无法直接使用,一开始
4:无法显示byte值
5:界面修改
6:连接的时候,不断开以前的连接,造成重复连接


提示
vbRichClient5的手册找遍了都找不到,估计作者都没写,更别想有中文版了,所以只能
在vb6中点击视图-》对象窗口,可显示vbRichClient5.dll 所有的类和方法 
http://download.csdn.net/download/jia175891641/10252080

QQ175891641
2018-2-15优化
发现网上关于vbrichclient的教程比较少,但这个实在是好东西,实用性,稳定性都比VB自带的winsock好的多,多客户端不用winsock控件数组。 也不用在各窗体上放winsock,直接在模块中就能实现收发 下面直接上代码,窗体和文本钮、按钮大家自行拖放。要用到VB自带隐藏函数varptr()取内存指针(VbMsdn中没有这个函数,实际上很简单^^)。 VbRichClient5.0.38中包含sqlite3.9支持 上面共享中也包含VbRichClient5.0.38支持库 VbRichClient代替winsock 主要使用 cTCPServer cTCPClient cUDP '--------------------------------------------------------------------- '服务器端,代码最简化,要实现多客户端只要用数组存hsocket就可以 Option Explicit Dim WithEvents sv As cTCPServer Dim WithEvents udp1 As cUDP Dim cHsocket& Private Sub Form_Load() Set sv = New cTCPServer sv.Listen sv.GetHost("127.0.0.1"), 35912 Debug.Print sv.GetHost("") Set udp1 = New cUDP udp1.Bind "127.0.0.1", 5616 End Sub Private Sub sv_DataArrival(ByVal hSocket As Long, ByVal BytesTotal As Long, ByVal FirstBufferAfterOverflow As Boolean) Dim d() As Byte, s$ ReDim d(BytesTotal - 1) sv.GetData hSocket, VarPtr(d(0)), BytesTotal '★★关键代码 s = d Text2.Text = Text2.Text & s & vbCrLf Debug.Print "收到:" & BytesTotal End Sub Private Sub sv_TCPAccepted(ByVal hSocket As Long) cHsocket = hSocket Text1.Text = Text1.Text & sv.GetPeerHostIPAndPort(hSocket) & vbCrLf End Sub Private Sub sv_TCPDisConnect(ByVal hSocket As Long) Text3.Text = Text3.Text & sv.GetPeerHostIPAndPort(hSocket) & vbCrLf End Sub Private Sub udp1_NewDatagram(ByVal BytesTotal As Long, ByVal FirstBufferAfterOverflow As Boolean) Dim d() As Byte, s$ ReDim d(BytesTotal - 1) udp1.GetData VarPtr(d(0)), BytesTotal s = d Text2.Text = Text2.Text & s & vbCrLf End Sub '------------------------------------------------------- '客户端 Option Explicit Dim WithEvents cl As cTCPClient Dim WithEvents udp1 As cUDP Dim cid& Private Sub Command1_Click() cid = cl.Connect("QgB1", 35912) End Sub Private Sub Command2_Click() cl.Disconnect cid End Sub Private Sub Command3_Click() Dim b() As Byte b = Text1.Text cl.SendData cid, VarPtr(b(0)), UBound(b) + 1 End Sub Private Sub Command4_Click() Dim d() As Byte, s$ s = "yessss" d = s udp1.RemoteIP = "127.0.0.1" udp1.RemotePort = 5616 u
说明: 1此程序由ecz00程序优化而来 地址 http://download.csdn.net/download/ecz00/9403630 因此程序可以说是网上唯一的tcpclient使用的中文案例,提供了我思路,在此感谢 ;为什么用这个插件,vb自带的插件winsock 这么有用的插件 居然不是微软自带的插件, 最要命的是 直接注册ocx控件 win7 win10上可能因为序列号无法注册,那么vb下如何开发ip客户端,变得很麻烦,尝试过APi方法的,但是过于复杂,程序量太大,比较麻烦,因此用 此方案比较可行,在原版的基础上花了5天时间摸索和优化, 此版本使用方法 1 把vbRichClient5.dll放进C:\Windows\SysWOW64 (64位系统) 2 在vb6中点击 工程->引用 把上面的dll引用进来就可以额,不需要注册 3:使用sscom5.12.1 或其他tcp调试软件软件启动tcpserver 地址是127,0,0,1 5676 4:直接运行本软件即可使用。点击连接,显示成功,说明连接成功,可以相互发送数据了 服务端的程序在原版上未做修改,请自行优化 此软件改进了原版 1:无法显示连接状态和错误信息 2:只能发送不能接收 3:使用主机名的连接方式,无法直接使用,一开始 4:无法显示byte值 5:界面修改 6:连接的时候,不断开以前的连接,造成重复连接 提示 vbRichClient5的手册找遍了都找不到,估计作者都没写,更别想有中文版了,所以只能 在vb6中点击视图-》对象窗口,可显示vbRichClient5.dll 所有的类和方法 QQ175891641 2018-2-15优化
AB双方交换共享码流程说明:【双方使用一样的素数和原数,最终生成的共享码是完全一致的。】 A方: 用 素数prime,原数base,A任意自定的整数私锁 -> 生成公锁A (把公锁A发给B) B方: 用 素数prime,原数base,B任意自定的整数私锁 -> 生成公锁b (把公锁b发给A) 对应cCrypt中的:属性DiffieHellmanPrime,属性DiffieHellmanBase,属性DiffieHellmanPrivate -> DiffieHellmanCreatePublicKey() A方: 用 素数prime,原来自定的整数私锁A,公锁b-> 生成共享码 B方: 用 素数prime,原来自定的整数私锁b,公锁A-> 生成共享码 对应cCrypt中的:属性DiffieHellmanPrime,属性DiffieHellmanPrivate,属性DiffieHellmanPublic -> DiffieHellmanCreateSharedSecret() 说明:cCrypt中的GenPrime()用于随机生成一个极大的素数,CheckPrime()用于检查该数是否素数。 --------------------------------------------------------------------------------------------------------------------------------------- diffie-hellman算法原理(原理其实很简单,但大素数、原数及高次元方程比较难解^_^): 例子:设密钥交换基于素数P=97 和 97的一个原根G = 5 A和B分别随意选择私有密钥XA=36 和 XB=58。 每人计算其公开钥:YA=5^36=50 mod 97 :YB=5^58=44 mod 97 取了公开钥之后,都把公锁发给对方 再各自用以下公式计算得出双方共享数: Ka = (YB)^XA mod 97 = 44^36 = 75 mod 97 Kb = (YA)^XB mod 97 = 50^58 = 75 mod 97 如上所示,在双方不改变用于生成公锁的私锁值情况下(且素数一致),双方计算得到的shareKey是一样的!
### 回答1: Winsock控件是一种在Windows平台上使用的控件,也就是mswinsck.ocx。这个控件主要用于网络编程,通过它可以进行网络通信。Winsock控件可以在VB、VC++等编程环境下进行调用,而且Winsock控件支持TCP/IP协议和UDP协议。具体来说,Winsock控件可用于网络应用程序的开发,比如聊天程序、网络文件管理器、多人游戏等等。Winsock控件具有简单易用、稳定性好、灵活性高的优点,因此在网络编程中使用非常广泛。 Winsock控件的使用可以分为三个步骤:引用组件、初始化组件和使用组件。首先,需要在开发环境中引用Winsock组件,才能使用它提供的功能。然后,需要初始化Winsock控件,即使用WINSOCK.OCX库文件。最后,就可以使用Winsock控件提供的方法、属性和事件来进行网络编程。 总之,Winsock控件是Windows操作系统中一种用于网络编程的重要控件,为我们日常开发提供了很大帮助。如果你正在进行网络编程的开发工作,建议你尝试使用Winsock控件,它将为你的开发带来非常方便和高效的网络通信特性。 ### 回答2: Winsock控件是一种Microsoft Windows平台上的ActiveX控件,也称为MSWINSCK.OCX。这个控件专门用于开发网络应用程序或发现和解决网络通信问题。控件的主要功能是实现TCP/IP协议和UDP协议的网络通信操作。 Winsock控件的使用非常灵活,它提供了众多的属性、方法和事件,使得开发人员可以根据不同的需求自由地进行组合和调整。例如,通过设置控件属性,可以设置本地主机和远程主机的IP地址和端口号;通过调用控件方法,可以连接远程主机并发送和接收数据;通过处理控件事件,可以实时监测网络通信状态和处理错误信息等。 Winsock控件在开发网络应用程序时具有很大的优势。首先,它能够跨越不同平台和操作系统进行网络通信。其次,它提供了可靠的网络连接,保证网络数据的有效传输和安全性。此外,Winsock控件的操作简单明了,集成度高,使得开发人员可以快速地开发出高质量的网络应用程序。 总之,Winsock控件是一种非常实用的网络开发工具。它不仅为网络应用程序开发提供了可靠的基础,而且能够大幅提高应用程序的效率、可靠性和安全性。 ### 回答3: Winsock控件是一种用于在Windows操作系统中进行网络编程的组件,它是由微软公司开发的,通常称为mswinsck.ocx。该控件提供了一组简单易用的方法,使开发人员能够从应用程序中访问网络协议,如TCP/IP和UDP。 因此,开发人员可以使用Winsock控件在应用程序中创建网络连接、发送和接收数据等操作。 Winsock控件主要用于开发网络通信应用程序,如聊天软件、文件传输等。 这些应用程序通常需要从网络访问资源或与其他计算机进行通信。Winsock控件可以帮助开发人员轻松地实现这些功能。 Winsock控件也包括一些常见的安全功能和错误处理功能,以帮助开发人员减少错误和风险。此外,Winsock控件还具有良好的兼容性,可以与多种编程语言一起使用,如VB、C++、C#等。 总之,Winsock控件是一种非常有用的网络编程工具,它帮助了开发人员轻松实现网络通信应用程序,并提供了一系列实用的功能和方法,使得网络编程变得更加容易且高效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值